Options:
- # Session Start: Fri Oct 10 00:00:00 2014
- # Session Ident: #css
- # [00:00] * Quits: glenn_ (~gadams@public.cloak) (Ping timeout: 180 seconds)
- # [00:16] * Quits: dauwhe_ (~dauwhe@public.cloak) (Client closed connection)
- # [00:19] * Quits: adenilson (~anonymous@public.cloak) (adenilson)
- # [00:20] * Joins: glenn_ (~gadams@public.cloak)
- # [00:20] * Quits: jet (~junglecode@public.cloak) (jet)
- # [00:24] * Quits: glenn (~gadams@public.cloak) (Ping timeout: 180 seconds)
- # [00:27] * Joins: glenn (~gadams@public.cloak)
- # [00:28] * Joins: dauwhe (~dauwhe@public.cloak)
- # [00:29] * Quits: dauwhe (~dauwhe@public.cloak) (Client closed connection)
- # [00:30] * Joins: dauwhe (~dauwhe@public.cloak)
- # [00:31] * Quits: glenn_ (~gadams@public.cloak) (Ping timeout: 180 seconds)
- # [00:36] * Quits: Ms2ger (~Ms2ger@public.cloak) (Ping timeout: 180 seconds)
- # [01:29] * Joins: adenilson (~anonymous@public.cloak)
- # [01:30] <TabAtkins> Okay, I just converted Bikeshed's anchor and biblio databases over to a custom file format, because the json parser was too slow, and shaved off nearly half a second of running time.
- # [01:30] * Quits: dauwhe (~dauwhe@public.cloak) (Client closed connection)
- # [01:30] * Joins: glenn_ (~gadams@public.cloak)
- # [01:31] <TabAtkins> I've only got two big things left I can think of to do in Bikeshed:
- # [01:31] * Joins: dauwhe (~dauwhe@public.cloak)
- # [01:31] <TabAtkins> 1. Write a simplified HTML parser that'll handle "correct" HTML fine, and let people opt into the full-featured html5lib parser if they're getting weird results.
- # [01:32] <TabAtkins> Blink did this, and is reporting a 19x speedup in HTML parsing, which seems crazy but attractive.
- # [01:33] <TabAtkins> And since I've gotten myself down to only a single HTML parse now (of the entire document, once I'm done with text-level manipulations), but it's still taking up about 20% of the runtime, that might be valuable.
- # [01:34] <TabAtkins> 2. Rather than simplifying the file format for the data files, turn them into Python files and just include them normally. This way they'll get precompiled into .pyo files after the first time you run Bikeshed each update.
- # [01:35] * Quits: glenn (~gadams@public.cloak) (Ping timeout: 180 seconds)
- # [01:37] * Joins: glenn (~gadams@public.cloak)
- # [01:37] <liam> how long does it take??
- # [01:37] <TabAtkins> Right now, running it on MQ (a moderate size spec) takes about 1.3s.
- # [01:38] <TabAtkins> I'm trying to get it down below 1s, but I'm not sure I'll be able to.
- # [01:38] <TabAtkins> Before I started perf hacking, though, runtime was ~2.4 seconds
- # [01:38] <liam> faster computer? :)
- # [01:38] <liam> so that sounds like a worthwhile improement
- # [01:38] <liam> use db, that always speeds things up :)
- # [01:39] * Joins: jet (~junglecode@public.cloak)
- # [01:39] <liam> (for data files I mean)
- # [01:39] <TabAtkins> Like, an actual database?
- # [01:39] <liam> although these days i tend to use a tree store like basex
- # [01:40] <liam> well, (n)db(m) is just a persistent hash really
- # [01:40] <TabAtkins> Having a running database process would indeed speed things up (about 15% of the runtime is in parsing and loading up the in-memory databases).
- # [01:40] <liam> although the bsd db libraries support transactions
- # [01:40] <liam> it's a key/value store
- # [01:41] <TabAtkins> Also, that'll make Bikeshed even less portable than it already is. ^_^
- # [01:41] <TabAtkins> (I didn't know about db before, though - that's cool)
- # [01:42] * Quits: glenn_ (~gadams@public.cloak) (Ping timeout: 180 seconds)
- # [01:42] <liam> my old text retrieval package is built on it (actually originally on the Unix V7 predecessor originally)
- # [01:42] <liam> hmm, looks like pybsddb was removed for python 3
- # [01:42] <TabAtkins> I really wish Python had a readline that didn't include the newline at the end, though. I'm literally spending 5% of executation time (1/3 of total parsing time) on stripping newlines from the lines.
- # [01:43] <liam> ow
- # [01:43] <TabAtkins> I could probably build a class that moderated access to things, so I didn't have to strip them until you asked for the data.
- # [01:46] <liam> is it faster to ask for length and return a substring? if you know there's always a \n (except maybe on the last line of a file)
- # [01:48] <TabAtkins> I have to parse the entire file anyway, and the lines aren't fixed-width.
- # [01:48] <liam> right
- # [01:48] <TabAtkins> Trying out the "don't strip, and just handle them on access" thing right now
- # [01:48] <liam> but you can ask how long a line actually is and then subtract 1 :)
- # [01:48] <TabAtkins> Ah, no, don't think that's faster than just asking for a bunch of lines.
- # [01:48] <liam> makes sense
- # [01:48] <liam> Liam's rule of optimization: not doing something is usually faster than doing it
- # [01:55] * Quits: jet (~junglecode@public.cloak) (jet)
- # [01:58] <TabAtkins> Yup, appears to have shaved off about 1% when done only on biblios. I'll have to check out its effect on xrefs, which are about triple the size.
- # [01:58] * Quits: dauwhe (~dauwhe@public.cloak) (Client closed connection)
- # [02:01] * Joins: glenn_ (~gadams@public.cloak)
- # [02:06] * Quits: glenn (~gadams@public.cloak) (Ping timeout: 180 seconds)
- # [02:36] * Quits: adenilson (~anonymous@public.cloak) (adenilson)
- # [02:39] <TabAtkins> And yup, lost another 2% or so when I applied it to the ref data. Nice.
- # [02:50] <TabAtkins> Hahaha, it also helps if I stop saving an extra 1.2MB of unnecessary data into the data files. That was 2.5% of running time by itself. ^_^
- # [02:51] <TabAtkins> And I'm down to 1.2s, niiiice.
- # [02:56] * Joins: glenn (~gadams@public.cloak)
- # [02:58] * Joins: dauwhe (~dauwhe@public.cloak)
- # [02:59] <liam> almost there, next is to quite some games in the other window!
- # [03:01] * Quits: glenn_ (~gadams@public.cloak) (Ping timeout: 180 seconds)
- # [03:06] * Quits: dauwhe (~dauwhe@public.cloak) (Ping timeout: 180 seconds)
- # [03:10] * Joins: jet (~junglecode@public.cloak)
- # [03:25] * Joins: glenn_ (~gadams@public.cloak)
- # [03:29] * Quits: glenn (~gadams@public.cloak) (Ping timeout: 180 seconds)
- # [03:35] * Joins: glenn (~gadams@public.cloak)
- # [03:40] * Quits: glenn_ (~gadams@public.cloak) (Ping timeout: 180 seconds)
- # [03:46] * Quits: jet (~junglecode@public.cloak) (jet)
- # [03:51] * Joins: dauwhe (~dauwhe@public.cloak)
- # [04:15] * Joins: glenn_ (~gadams@public.cloak)
- # [04:21] * Quits: glenn (~gadams@public.cloak) (Ping timeout: 180 seconds)
- # [04:26] * Quits: dauwhe (~dauwhe@public.cloak) (Client closed connection)
- # [05:27] * Joins: dauwhe (~dauwhe@public.cloak)
- # [05:32] * Joins: glenn (~gadams@public.cloak)
- # [05:34] * Quits: dauwhe (~dauwhe@public.cloak) (Ping timeout: 180 seconds)
- # [05:37] * Quits: glenn_ (~gadams@public.cloak) (Ping timeout: 180 seconds)
- # [06:04] * Joins: glenn_ (~gadams@public.cloak)
- # [06:09] * Quits: glenn (~gadams@public.cloak) (Ping timeout: 180 seconds)
- # [06:27] * Joins: dauwhe (~dauwhe@public.cloak)
- # [06:34] * Quits: dauwhe (~dauwhe@public.cloak) (Ping timeout: 180 seconds)
- # [07:08] * Joins: glenn (~gadams@public.cloak)
- # [07:13] * Quits: glenn_ (~gadams@public.cloak) (Ping timeout: 180 seconds)
- # [07:27] * Joins: dauwhe (~dauwhe@public.cloak)
- # [07:35] * Quits: dauwhe (~dauwhe@public.cloak) (Ping timeout: 180 seconds)
- # [08:00] * Joins: nvdbleek (~nvdbleek@public.cloak)
- # [08:02] * Joins: zcorpan (~zcorpan@public.cloak)
- # [08:04] * Joins: glenn_ (~gadams@public.cloak)
- # [08:09] * Quits: glenn (~gadams@public.cloak) (Ping timeout: 180 seconds)
- # [08:13] <SimonSapin> TabAtkins: rewrite Bikeshed in Rust :)
- # [08:18] * Joins: dbaron (~dbaron@public.cloak)
- # [08:27] * Joins: dauwhe (~dauwhe@public.cloak)
- # [08:34] * Quits: dauwhe (~dauwhe@public.cloak) (Ping timeout: 180 seconds)
- # [08:46] * Quits: antonp (~Thunderbird@public.cloak) (Ping timeout: 180 seconds)
- # [08:53] * Joins: florian (~Florian@public.cloak)
- # [09:04] * Joins: nikos (~uid28403@public.cloak)
- # [09:13] * Quits: dbaron (~dbaron@public.cloak) (Ping timeout: 180 seconds)
- # [09:28] * Joins: dauwhe (~dauwhe@public.cloak)
- # [09:35] * Quits: dauwhe (~dauwhe@public.cloak) (Ping timeout: 180 seconds)
- # [10:08] * Quits: nvdbleek (~nvdbleek@public.cloak) (nvdbleek)
- # [10:12] * Joins: Ms2ger (~Ms2ger@public.cloak)
- # [10:13] * Joins: nvdbleek (~nvdbleek@public.cloak)
- # [10:15] * Quits: nvdbleek (~nvdbleek@public.cloak) (nvdbleek)
- # [10:24] * Joins: nvdbleek (~nvdbleek@public.cloak)
- # [10:25] * Quits: florian (~Florian@public.cloak) ("Leaving.")
- # [10:27] * Joins: nvdbleek3 (~nvdbleek@public.cloak)
- # [10:28] * Joins: dauwhe (~dauwhe@public.cloak)
- # [10:31] * Quits: nvdbleek (~nvdbleek@public.cloak) (Ping timeout: 180 seconds)
- # [10:31] * nvdbleek3 is now known as nvdbleek
- # [10:32] * Joins: florian (~Florian@public.cloak)
- # [10:35] * Quits: dauwhe (~dauwhe@public.cloak) (Ping timeout: 180 seconds)
- # [11:29] * Joins: dauwhe (~dauwhe@public.cloak)
- # [11:36] * Quits: dauwhe (~dauwhe@public.cloak) (Ping timeout: 180 seconds)
- # [11:41] * Joins: lajava (~javi@public.cloak)
- # [11:57] * Quits: florian (~Florian@public.cloak) ("Leaving.")
- # [12:02] * Quits: zcorpan (~zcorpan@public.cloak) (Client closed connection)
- # [12:02] * Joins: zcorpan (~zcorpan@public.cloak)
- # [12:09] * Quits: zcorpan (~zcorpan@public.cloak) (Ping timeout: 180 seconds)
- # [12:19] * Joins: tommyjtl (~tommyjtl@public.cloak)
- # [12:29] * Joins: dauwhe (~dauwhe@public.cloak)
- # [12:32] * Quits: tommyjtl (~tommyjtl@public.cloak) (Client closed connection)
- # [12:33] * Joins: tommyjtl (~tommyjtl@public.cloak)
- # [12:36] * Quits: dauwhe (~dauwhe@public.cloak) (Ping timeout: 180 seconds)
- # [12:40] * Quits: tommyjtl (~tommyjtl@public.cloak) (Ping timeout: 180 seconds)
- # [13:02] * Joins: zcorpan (~zcorpan@public.cloak)
- # [13:05] * Quits: zcorpan (~zcorpan@public.cloak) (Client closed connection)
- # [13:10] * Joins: florian (~Florian@public.cloak)
- # [13:23] * Quits: nvdbleek (~nvdbleek@public.cloak) (nvdbleek)
- # [13:30] * Joins: dauwhe (~dauwhe@public.cloak)
- # [13:37] * Quits: dauwhe (~dauwhe@public.cloak) (Ping timeout: 180 seconds)
- # [14:02] * Joins: nvdbleek (~nvdbleek@public.cloak)
- # [14:05] * Quits: florian (~Florian@public.cloak) ("Leaving.")
- # [14:07] * Joins: florian (~Florian@public.cloak)
- # [14:12] * Quits: florian (~Florian@public.cloak) ("Leaving.")
- # [14:31] * Joins: dauwhe (~dauwhe@public.cloak)
- # [14:35] * Joins: plh (plehegar@public.cloak)
- # [14:38] * Quits: dauwhe (~dauwhe@public.cloak) (Ping timeout: 180 seconds)
- # [14:44] * Quits: nvdbleek (~nvdbleek@public.cloak) (nvdbleek)
- # [14:57] * Quits: darktears (~darktears@public.cloak) (Ping timeout: 180 seconds)
- # [14:58] * Joins: dauwhe (~dauwhe@public.cloak)
- # [15:10] * Joins: darktears (~darktears@public.cloak)
- # [15:13] * Joins: nvdbleek (~nvdbleek@public.cloak)
- # [15:32] * Quits: nvdbleek (~nvdbleek@public.cloak) (nvdbleek)
- # [15:36] * Joins: nvdbleek3 (~nvdbleek@public.cloak)
- # [16:00] * Joins: tommyjtl (~tommyjtl@public.cloak)
- # [16:02] * Quits: nvdbleek3 (~nvdbleek@public.cloak) (nvdbleek3)
- # [16:03] * Joins: nvdbleek (~nvdbleek@public.cloak)
- # [16:05] * Quits: tommyjtl (~tommyjtl@public.cloak) (Client closed connection)
- # [16:06] * Joins: tommyjtl_ (~tommyjtl@public.cloak)
- # [16:07] * Quits: tommyjtl_ (~tommyjtl@public.cloak) (Client closed connection)
- # [16:07] * Joins: tommyjtl_ (~tommyjtl@public.cloak)
- # [16:13] * Joins: tommyjtl (~tommyjtl@public.cloak)
- # [16:16] * Quits: tommyjtl (~tommyjtl@public.cloak) (Client closed connection)
- # [16:16] * Joins: tommyjtl (~tommyjtl@public.cloak)
- # [16:19] * Quits: tommyjtl (~tommyjtl@public.cloak) (Client closed connection)
- # [16:19] * Quits: tommyjtl_ (~tommyjtl@public.cloak) (Ping timeout: 180 seconds)
- # [16:38] * Quits: nvdbleek (~nvdbleek@public.cloak) (nvdbleek)
- # [16:50] * Joins: florian (~Florian@public.cloak)
- # [17:04] * Quits: lajava (~javi@public.cloak) (Ping timeout: 180 seconds)
- # [17:07] * Joins: tommyjtl (~tommyjtl@public.cloak)
- # [17:11] * Joins: nvdbleek (~nvdbleek@public.cloak)
- # [17:15] * Quits: florian (~Florian@public.cloak) ("Leaving.")
- # [17:16] * Joins: florian (~Florian@public.cloak)
- # [17:17] * Quits: nvdbleek (~nvdbleek@public.cloak) (nvdbleek)
- # [17:17] * Quits: florian (~Florian@public.cloak) ("Leaving.")
- # [17:21] * Joins: nvdbleek (~nvdbleek@public.cloak)
- # [17:21] * Quits: nvdbleek (~nvdbleek@public.cloak) (nvdbleek)
- # [17:21] * Joins: nvdbleek (~nvdbleek@public.cloak)
- # [17:26] * Quits: nvdbleek (~nvdbleek@public.cloak) (nvdbleek)
- # [17:39] * Joins: glenn (~gadams@public.cloak)
- # [17:44] * Quits: glenn_ (~gadams@public.cloak) (Ping timeout: 180 seconds)
- # [17:49] * Quits: tommyjtl (~tommyjtl@public.cloak) (Client closed connection)
- # [17:49] * Joins: tommyjtl (~tommyjtl@public.cloak)
- # [18:03] * Quits: tommyjtl (~tommyjtl@public.cloak) (Client closed connection)
- # [18:04] * Joins: tommyjtl (~tommyjtl@public.cloak)
- # [18:05] * Quits: dauwhe (~dauwhe@public.cloak) (Client closed connection)
- # [18:07] * Joins: florian (~Florian@public.cloak)
- # [18:16] * Joins: tommyjtl_ (~tommyjtl@public.cloak)
- # [18:18] <TabAtkins> SimonSapin: Is Servo's HTML and CSS implementation sufficiently separable to use independently?
- # [18:19] * Quits: florian (~Florian@public.cloak) ("Leaving.")
- # [18:19] <SimonSapin> TabAtkins: the parser are usable independently https://github.com/kmcallister/html5ever https://github.com/servo/rust-cssparser/
- # [18:19] <SimonSapin> parsers, even
- # [18:19] <TabAtkins> Matching engine?
- # [18:20] <SimonSapin> but that was a joke, I suspect you don’t want to maintain binaries for multiple OSes, and users don’t want to install a compiler
- # [18:20] * Joins: tommyjt__ (~tommyjtl@public.cloak)
- # [18:20] <SimonSapin> Servo’s selector matching is tied to the DOM, which is tied with SpiderMonkey
- # [18:21] * Joins: dauwhe (~dauwhe@public.cloak)
- # [18:23] * Joins: dbaron (~dbaron@public.cloak)
- # [18:23] * Quits: tommyjtl (~tommyjtl@public.cloak) (Ping timeout: 180 seconds)
- # [18:25] * Quits: tommyjtl_ (~tommyjtl@public.cloak) (Ping timeout: 180 seconds)
- # [18:27] <TabAtkins> Eh, maintaining binaries ain't a big deal.
- # [18:28] <TabAtkins> And it would make my Windows users happier to just have a binary to run. ^_^
- # [18:28] <SimonSapin> so every time you push a change, you would go on multiple machines to rebuild for all supported platforms?
- # [18:30] <TabAtkins> Man, I can't just flip some compiler switch?
- # [18:32] <SimonSapin> cross-compiling exists, but I don’t know how reliable or easy to setup it is.
- # [18:32] <TabAtkins> Bah, never mind then.
- # [18:32] <TabAtkins> I'll keep plugging on something that works today. ^_^
- # [18:41] * Quits: tommyjt__ (~tommyjtl@public.cloak) (Client closed connection)
- # [18:44] * Quits: glenn (~gadams@public.cloak) (Client closed connection)
- # [19:01] * Quits: Ms2ger (~Ms2ger@public.cloak) (Ping timeout: 180 seconds)
- # [19:13] * Joins: Ms2ger (~Ms2ger@public.cloak)
- # [19:45] * Joins: adenilson (~anonymous@public.cloak)
- # [20:17] * Quits: dbaron (~dbaron@public.cloak) ("8403864 bytes have been tenured, next gc will be global.")
- # [20:21] * Joins: nvdbleek (~nvdbleek@public.cloak)
- # [20:36] * Quits: nvdbleek (~nvdbleek@public.cloak) (nvdbleek)
- # [21:15] * Joins: zcorpan (~zcorpan@public.cloak)
- # [21:31] * Joins: nvdbleek (~nvdbleek@public.cloak)
- # [21:43] * Joins: florian (~Florian@public.cloak)
- # [21:43] <TabAtkins> plinss: Just verifying before I try to dig down into my markdown parser or something, but does widlparser discard extra newlines?
- # [21:43] <TabAtkins> I just noticed that all of the IDL in Font Loading is smashed together.
- # [21:44] <TabAtkins> And it didn't use to do that, so it's clearly a change somewhere. I guess I can bisect and check it.
- # [21:46] <plinss> TabAtkins: No, the widlparser preserves everything (unless there's) a bug.
- # [21:46] <TabAtkins> Ok, it's probably on my part. Bisecting now.
- # [21:46] <plinss> But shepherd's parser has an assert to test that, so it should be good.
- # [21:52] * Quits: zcorpan (~zcorpan@public.cloak) (Client closed connection)
- # [21:52] * Joins: zcorpan (~zcorpan@public.cloak)
- # [21:55] * Joins: zcorpan_ (~zcorpan@public.cloak)
- # [21:56] <TabAtkins> Yup, bug on my side, right on the commit I was suspecting.
- # [21:59] * Quits: zcorpan_ (~zcorpan@public.cloak) (Client closed connection)
- # [21:59] * Quits: zcorpan (~zcorpan@public.cloak) (Ping timeout: 180 seconds)
- # [22:04] * Quits: florian (~Florian@public.cloak) ("Leaving.")
- # [22:09] * Joins: florian (~Florian@public.cloak)
- # [22:09] * Joins: dbaron (~dbaron@public.cloak)
- # [22:17] <TabAtkins> Nope, this is definitely more mysterious than I thought.
- # [22:17] <TabAtkins> I assumed it was in my markdown handling, but this happened *before* the big markdown shift. It was a fix for a bug from fantasai when the first line of a <pre> is indented further than subsequent lines.
- # [22:17] <TabAtkins> Weird.
- # [22:18] * Joins: jet (~junglecode@public.cloak)
- # [22:34] <SimonSapin> I remember debugging this with fantasai
- # [22:39] * Quits: florian (~Florian@public.cloak) ("Leaving.")
- # [22:44] * Joins: florian (~Florian@public.cloak)
- # [22:45] <TabAtkins> Finally discovered it.
- # [22:48] <TabAtkins> And jeezus, this finally explains a weird bug I ran into a long time ago and had to work around.
- # [22:48] * Quits: plh (plehegar@public.cloak) ("Leaving")
- # [22:55] <Ms2ger> Tell us about it
- # [23:04] <TabAtkins> Ms2ger: I will!
- # [23:07] * Quits: nikos (~uid28403@public.cloak) ("Connection closed for inactivity")
- # [23:10] * Quits: florian (~Florian@public.cloak) ("Leaving.")
- # [23:13] * Quits: dbaron (~dbaron@public.cloak) ("8403864 bytes have been tenured, next gc will be global.")
- # [23:13] * Joins: dbaron (~dbaron@public.cloak)
- # [23:15] * Quits: darktears (~darktears@public.cloak) (Client closed connection)
- # [23:16] * Joins: florian (~Florian@public.cloak)
- # [23:25] * Quits: florian (~Florian@public.cloak) ("Leaving.")
- # [23:27] * Joins: florian (~Florian@public.cloak)
- # [23:34] <dauwhe> It was twenty years ago today
- # [23:34] <dauwhe> That Håkon said the web some day
- # [23:34] <dauwhe> Should have some way of using styles
- # [23:34] <dauwhe> That be’d guaranteed to raise a smile
- # [23:34] <dauwhe> So may I introduce to you
- # [23:34] <dauwhe> The spec you’ve known for all these years
- # [23:34] <dauwhe> Håkon Lie’s Cascading Style Sheet spec
- # [23:34] <TabAtkins> *California Style Sheets
- # [23:35] <TabAtkins> But otherwise good
- # [23:35] <TabAtkins> https://medium.com/cool-code-pal/a-call-for-web-developers-to-deprecate-their-css-1f6430781393
- # [23:35] * dauwhe California has the wrong number of syllables :)
- # [23:35] <dauwhe> We’re Håkon Lie’s Cascading Style Sheet spec
- # [23:35] <dauwhe> We clip so borders won’t be shown
- # [23:35] <dauwhe> We’re Håkon Lie’s Cascading Style Sheet spec
- # [23:36] <dauwhe> But regions he would now disown.
- # [23:36] <dauwhe> Håkon Lie’s Cascading, Håkon Lie’s Cascading
- # [23:36] <dauwhe> Håkon Lie’s Cascading Style Sheet spec
- # [23:36] <dauwhe> Positioning is absolute
- # [23:36] <dauwhe> Containing blocks are here
- # [23:36] <dauwhe> You’re such a lovely stack context
- # [23:36] <dauwhe> We’d like to paint you to our screen
- # [23:36] <dauwhe> We’d love to render you
- # [23:37] <TabAtkins> What's this to the tune of?
- # [23:37] <dauwhe> Sgt. Peppers
- # [23:37] <dauwhe> I don’t really want to stop the show
- # [23:38] <dauwhe> But I thought that you might like to know
- # [23:38] * Quits: florian (~Florian@public.cloak) ("Leaving.")
- # [23:38] <dauwhe> That the editor wants to write the spec
- # [23:38] <dauwhe> And he hopes you won’t object
- # [23:38] <dauwhe> So let me introduce to you
- # [23:38] <dauwhe> The one and only Gijsbert Bos
- # [23:38] <dauwhe> And Håkon Lie’s Cascading Style Sheet spec
- # [23:41] * Quits: Ms2ger (~Ms2ger@public.cloak) ("nn")
- # [23:43] * Joins: florian (~Florian@public.cloak)
- # Session Close: Sat Oct 11 00:00:00 2014
The end :)