00:02 | <jamesr> | AryehGregor: i keep replying to that thread without reading the whole thin |
00:02 | <jamesr> | i might just be making a fool of myself |
00:02 | <jamesr> | ah well |
00:08 | <zewt> | jamesr: i already said that it's sort of silly to think about adding a complex feature to the platform so mirrors don't have to mirror a version of a file with a few lines of code wrapped around it :) |
00:09 | <zewt> | not sure whether that works trivially with complex script sets like jquery (eg. to just boilerplate it automatically) or if it needs more work than that |
00:09 | <jamesr> | i think it's brave to assume that script authors will step up to the plate here |
00:09 | <jamesr> | it's also extra bytes that not all users of the script will want to care about |
00:09 | <zewt> | given that the only scripts we're really talking about here are big ones, adding a dozen or two lines of code around them doesn't seem worth worrying about |
00:10 | <jamesr> | not necessarily big ones, ones that have expensive top-level statements |
00:10 | <jamesr> | it could be a tiny-ass script that does a full DOM walk in some top-level statement |
00:12 | <jamesr> | and even small scripts can be expensive to download if the RTT is high |
00:12 | <jamesr> | like it is on mobile |
00:12 | <jamesr> | so you might want to start the download asap because it takes a few seconds to set up a new HTTP connection |
00:12 | <zewt> | you'd also want a little more framework for this sort of thing in any case; for example, to do things like say "load this script, and run this callback when it's available or immediately if it's already loaded" |
00:13 | <zewt> | but again it doesn't seem like we need browser-level help there |
00:14 | <zewt> | hmm, is it possible for an external script to get its own URL? can't say I've ever tried |
00:15 | <zewt> | just thinking of APIs like load_script(url, callback), with the script looking like registerScript(my_url, top_level_function) |
00:15 | <zewt> | (without hardcoding the URL in the file) |
00:18 | <zewt> | (user-library APIs, that is, not suggesting a browser API like that) |
00:28 | <heycam> | Hixie, ping |
00:31 | <Hixie> | yo |
00:31 | <Hixie> | sup |
00:33 | <heycam> | hey, I'm trying to work out what to do with Date |
00:33 | <heycam> | as used in HTMLInputElement and HTMLTimeElement |
00:33 | <heycam> | Dates in JS are mutable |
00:33 | <Hixie> | yeah, the attributes in question say to return a new object each time iirc |
00:34 | <heycam> | that sounds like the same kind of undesirable behaviour that led to the "don't allow sequences to be the type of attributes" decision recently |
00:34 | <Yuhong> | Hixie: BTW, I hate that the DOM viewer breaks the back button. Can that be fixed? |
00:35 | <heycam> | do we have implementations of those Date attributes yet? |
00:35 | <Hixie> | heycam: it's bad for sequences because they almost always get used in loops |
00:35 | <Hixie> | heycam: for dates, it doesn't seem like a big deal |
00:35 | <heycam> | Hixie, true, it's probably not as bad |
00:35 | <Hixie> | heycam: especially since dates can be implemented in js engines as a native very fast type |
00:35 | <Hixie> | heycam: so creating a new one need not be expensive |
00:35 | <heycam> | so what I'm wondering about really is what's the semantics of the IDL type "Date" |
00:36 | <heycam> | is it a mutable or immutable value? |
00:36 | <Hixie> | it's just an object type, no? |
00:36 | <Hixie> | like RegExp or HTMLElement or Object |
00:36 | <Hixie> | a reference type, i should say |
00:36 | <heycam> | mm |
00:37 | <heycam> | so you would be able to modify it |
00:37 | <heycam> | but the current uses of the type happen to have "always return a new one" behaviour |
00:37 | <heycam> | so would never see the modifications |
00:37 | <heycam> | but future APIs could |
00:37 | <Hixie> | yeah, you could imagine an attribute that kept a reference to the object so that you could modify it |
00:38 | <heycam> | there's something that doesn't feel quite right about native JS object mutation causing something to happen in the DOM |
00:38 | <Hixie> | wow, the webidl and html validators got huge numbers of new warnings since i last regenned the spec a few hours ago |
00:38 | <Hixie> | heycam: yeah i don't think we'd ever do that in practice |
00:39 | <heycam> | but you would be ok with having a DOM object / future API look at the "current value" of a Date object |
00:39 | <Hixie> | "Interface CanvasRenderingContext2D.drawImage() has a non-optional argument after an optional one" that's not a bug is it? |
00:39 | <heycam> | yes it is |
00:40 | <Hixie> | it's hard to comment on future APIs without a concrete example |
00:40 | <heycam> | sure |
00:40 | <Hixie> | why is that not valid now? |
00:40 | <heycam> | what do you want it to mean? |
00:40 | heycam | pulls up the spec |
00:40 | <Yuhong> | Hixie: BTW, I hate that the DOM viewer breaks the back button. Can that be fixed? |
00:40 | <Hixie> | i thought it used to mean "you can truncate here" |
00:40 | <heycam> | ah right |
00:40 | <Hixie> | Yuhong: oops, sorry, forgot to reply to you before |
00:40 | <Hixie> | Yuhong: how does it break it? |
00:40 | <heycam> | you are right, that used to be valid, and I took it out |
00:41 | <heycam> | I think it looks quite confusing in the IDL |
00:41 | <Hixie> | k |
00:41 | <heycam> | as if you can omit just that middle parameter |
00:41 | <Hixie> | i can just list all the variants i guess |
00:41 | <heycam> | yeah |
00:41 | <heycam> | 12 of them then? :) |
00:41 | <Yuhong> | Hixie: Try typing in the textbox, and then click back several times. |
00:41 | <Hixie> | Yuhong: it seems to work... it goes back through the various states of the iframe, per spec, no? |
00:42 | <Hixie> | heycam: some large number :-) |
00:42 | <Yuhong> | Hixie: Yea, but the textbox doesn't update making it useless for undo |
00:43 | <Hixie> | Yuhong: true. don't hit back :-) |
00:43 | <Yuhong> | Hixie: and if you do a lot of typing it is easy to lose track. |
00:43 | <Hixie> | heycam: btw i just checked in an update for websockets that introduces an attribute whose value is a type, which might be controversial |
00:43 | <heycam> | um |
00:43 | <heycam> | what now? :) |
00:43 | <Yuhong> | Hixie: I try to open it in a separate tab. |
00:44 | <heycam> | Hixie, link? |
00:44 | <Hixie> | heycam: lets you pick whether you want binary data to be Blob or ArrayBuffer, so the attribute's allowed values are literally the Blob and ArrayBuffer interface objects |
00:44 | <Yuhong> | Hixie: and if you do a lot of typing it is easy to lose track of where you were before. |
00:44 | <Hixie> | heycam: http://www.whatwg.org/specs/web-apps/current-work/complete.html#dom-websocket-binarytype |
00:46 | <Hixie> | hsivonen: is there some way to mute the "not yet implemented" warnings? i use unimplemented stuff on purpose :-) |
00:47 | <heycam> | Hixie, yeah I'm not sure I like that :) |
00:47 | <heycam> | as a general mechanism for mentioning types, it wouldn't handle anything that doesn't have an interface object |
00:47 | <heycam> | or primitive types |
00:47 | <heycam> | well, I guess you could use Number, Boolean, ... |
00:47 | <Hixie> | yeah what i really want is a native type type in js |
00:47 | <Yuhong> | BTW, in IE8/9 the browser and document mode if you set them using developer tools override everything else, which is why I do that in a separate tab too. |
00:48 | <Philip`> | AryehGregor: I remember Descent had various 3D modes, like a red-green one and a uncrossed-eye one, I think, and that was a fairly important game |
00:51 | <Hixie> | heycam: only 9 drawImage()s it seems, so not so bad |
00:52 | <Hixie> | heycam: what's the practical difference between Foo[] and sequence<Foo> when used as a host object argument type? |
00:54 | <heycam> | Hixie, none if there is no way to pass in an actual, existing array host object |
00:54 | <heycam> | if you pass in a JS native array both will "do the right thing" |
00:54 | <Hixie> | k |
00:54 | <heycam> | sequence probably capture the semantics better if there is no way to pass in an array host object |
00:54 | <Hixie> | in that case i'm just changing MessagePortArray from a sequence to an array and not making any other changes and it should just be better now |
00:55 | <Hixie> | since it's used for attributes and arguments |
00:55 | <heycam> | so you can take an existing array host object (got from an attribute) and pass it in as an argument |
00:55 | <heycam> | when you pass it in to that argument will the object keep a hold of that object reference? |
00:55 | <heycam> | and possibly react to it changing from user script? |
00:56 | <Hixie> | no |
00:56 | <heycam> | so the function will just grab out all the array element values when you call it and do something with them? |
00:57 | <Hixie> | yeah |
00:57 | <heycam> | ok |
00:57 | <Hixie> | except for MessageEvent.initMessageEvent(), where it's undefined, i guess |
00:57 | <heycam> | so there are no practical differences between using array and sequence |
00:57 | <Hixie> | a Foo[] attribute always returns a new object right? |
00:57 | <heycam> | sequence captures this "passing in a copy, a refererence to it can never be kept" |
00:57 | <heycam> | captures it better |
00:58 | <heycam> | no, a Foo[] attribute returns what you want it to |
00:58 | <Hixie> | ah |
00:58 | <Hixie> | so wait, what's the difference between sequence<> and [] for attributes? i thought we were changing this because sequence<>s returned the same object and []s returned a new one |
00:59 | <heycam> | no, it's sequences that would always return a new object |
00:59 | <heycam> | hence being disallowed |
00:59 | <heycam> | a T[] could return a new object or the same one, it's up to you |
00:59 | <Hixie> | ah |
00:59 | <Hixie> | hm |
00:59 | <heycam> | but I would say that returning a new one wouldn't be good, for the reasons we disallow sequences there |
00:59 | <heycam> | *a new one always |
01:00 | <Hixie> | oh wait, []s can be made readonly right? |
01:00 | <Hixie> | that's how we get around this |
01:00 | <heycam> | the array object itself, yes |
01:00 | <heycam> | its contents can be made read only |
01:00 | <Hixie> | k |
01:00 | <heycam> | #dfn-read-only-array or something in Web IDL |
01:00 | <Hixie> | ok so i just need to make initMessageEvent copy the array and then .ports return a readonly one |
01:01 | <heycam> | make it return a read only one, and make it return the same one always, yeah? |
01:01 | <Hixie> | and then the only messages dom's idl checker will be giving me are 50 messages about [Supplemental] and one about some other attribute |
01:01 | <Hixie> | yeah |
01:01 | <heycam> | having the initMessageEvent argument be a sequence<MessagePort> captures the copying semantics |
01:01 | <heycam> | so you wouldn't have to state that explicitly |
01:01 | <Hixie> | yeah but then i have to have two types |
01:02 | <heycam> | you don't need to typedef these btw |
01:02 | <Hixie> | oh, good |
01:02 | <Hixie> | then i'll just do that then |
01:02 | <heycam> | there was a requirement to typedef them ages ago, but that got removed |
01:02 | <Hixie> | sweet |
01:02 | <Hixie> | that makes this much neater |
01:02 | <heycam> | cool |
01:05 | <TabAtkins> | AryehGregor: Minecraft has a 3d mode. |
01:14 | <Hixie> | heycam: fyi, i get 50+ of the first one of these and one of the second: |
01:14 | <Hixie> | Line 0 of IDL #0:Extended attribute of Supplemental is unknown in WebIDL. |
01:14 | <Hixie> | Line 0 of IDL #0:Extended attribute of ReplaceableNamedProperties is unknown in WebIDL. |
01:14 | <Hixie> | [ReplaceableNamedProperties] is apparently http://www.w3.org/Bugs/Public/show_bug.cgi?id=8241 |
01:15 | <Hixie> | oh hey you aslked me a question there |
01:16 | <Hixie> | hm |
01:16 | <Hixie> | heycam: didn't we recently discuss doing this by having Window inherit from something or the other way around or something? |
01:18 | <heycam> | Hixie, what's the context there? |
01:18 | <Hixie> | the bug |
01:19 | <Hixie> | making <script> foo = 1; status = 2; var bar = 3; </script> do the right thing |
01:20 | <heycam> | I do remember discussing something about having an extra object in the proto chain or Window |
01:20 | <heycam> | it unfortunately doesn't seem to be paged in to my head at the moment :) |
01:20 | <Hixie> | yeah me either |
01:21 | <heycam> | I'll read up on it again next week and work out what's going on there |
01:21 | <Hixie> | oh well k |
01:22 | <Hixie> | er |
01:22 | <Hixie> | "k" |
01:30 | <heycam> | Hixie, s/methos/method/ in that recent commit |
01:30 | <Hixie> | thanks |
02:09 | <TabAtkins> | I forget - is <link itemprop href> allowed in <body>? |
02:09 | <TabAtkins> | Or do you need to use <meta> to embed a link? |
02:09 | <TabAtkins> | Never mind, answered my own question. |
02:09 | <TabAtkins> | (Yes.) |
03:37 | <Hixie> | TabAtkins: i think what guha was suggesting is slightly different |
03:38 | <Hixie> | TabAtkins: he wants the value to be an item with an id, not a url |
03:38 | <Hixie> | TabAtkins: as far as i can tell, he just wants to be able to omit the itemscope="" attribute for brevity |
05:13 | <heycam> | Hixie, I added a date type, but I called it "date" rather than "Date" (for consistency with "object" (but inconsistency with "DOMString"!)) |
05:15 | <Hixie> | why not Date? that's what it is in JS |
05:16 | <heycam> | I was going for "built in types are lowercase" (except for DOMString because people complained about that) |
05:17 | <Hixie> | i'd go with all primitive types are lowercase |
05:17 | <Hixie> | and reference types are capitalised |
05:18 | <Hixie> | and then change 'object' to 'Object', mostly because that's how I always spell it anyway |
05:18 | <heycam> | hmm |
05:18 | <Hixie> | to the point that I've seriously considered a typedef |
05:18 | <Hixie> | :-) |
05:18 | <heycam> | I didn't particularly want to rename object again! |
05:18 | <Hixie> | well i was mostly kidding with that last bit |
05:18 | <heycam> | :) |
05:18 | <Hixie> | though i do really always type it Object |
05:19 | <Hixie> | at the end of the day I don't really mind either way, but Date would be mildly less inconvenient because it's what I've used already and it's what JS has |
05:19 | <Hixie> | so I don't have to have inside-baseball notes about how a "date" is a "Date" and so on |
05:19 | <heycam> | all right |
05:20 | <Hixie> | from a blackbox perspective, Date isn't really any more native than HTMLElement |
05:20 | <Hixie> | if that helps |
05:20 | <Hixie> | i mean, it's in a different spec, but that's a conway's law detail |
05:20 | <Hixie> | not "real" |
05:21 | <heycam> | suppose so |
05:21 | <heycam> | I also made it more "value like" for now |
05:21 | <heycam> | i.e. returns new objects each time you get the attribute |
05:21 | <heycam> | references don't get held by dom objects |
05:22 | <Hixie> | k |
05:24 | <heycam> | ok, renamed to "Date" |
06:33 | <JonathanNeal> | ahoy |
08:31 | <zcorpan> | what's the procedure to check why webgl doesn't work in latest safari? |
08:43 | <zcorpan> | Hixie: why is binaryType not a string? |
08:46 | <zcorpan> | Hixie: xhr's responseType uses strings "arraybuffer" and "blob" |
09:01 | <MikeSmith> | hsivonen: so, OK if I flip the Unicode Normalization checker to emitting a warning instead of an error? |
09:03 | <MikeSmith> | hsivonen: also, I chatted with r12a about it and from that I got the impression he kind of hit a brick wall with it in previous discussions with Hixie and/or others in the group |
09:03 | <hsivonen> | MikeSmith: ok |
09:03 | <MikeSmith> | thanks |
09:04 | <MikeSmith> | anyway, I'm not sure what concrete plans Richard or others from the i18n wg have for re-pursusing it |
09:04 | <MikeSmith> | but, I think his and their position remains that it should be a requirement in specs |
09:05 | <MikeSmith> | actually, he said specifically that they now recommend late normalization but only for id and class names and selectors |
09:05 | <MikeSmith> | and not for content |
09:07 | <MikeSmith> | hsivonen: he pointed me at the following as an example of the kind of reporting he thinks is useful (and that he's implemented himself) |
09:07 | <MikeSmith> | http://validator.w3.org/i18n-checker/index?docAddr=http%3A%2F%2Frishida.net%2Ftools%2Fi18nchecker%2Ftest.php&async=true |
09:08 | <MikeSmith> | in particular, see errors and warnings in the "Detailed report" section |
09:09 | <hsivonen> | so the key here is that normalization is a warning rather than an error? |
09:13 | <MikeSmith> | hsivonen: well, along with the fact that it doesn't do checking of content |
09:13 | <hsivonen> | MikeSmith: what's the reason not to check content? |
09:14 | <MikeSmith> | because they now do not recommend late normalization for content, but only for id and class names and selectors |
09:14 | <MikeSmith> | if I understand correctly |
09:15 | <MikeSmith> | dunno, maybe they do for early normalization? |
09:16 | <MikeSmith> | I have to admit that I'm not clear on what the distinction is between early normalization and late normalization |
09:16 | <MikeSmith> | or if that distinction might have relevance to whether to check for it in content rather than just in attribute values |
09:17 | <MikeSmith> | but I can ask him again |
09:21 | <MikeSmith> | hsivonen: ok, r12a says, thet do generally recommend that people save content as NFC |
09:21 | <MikeSmith> | so a validator can warn if they don't, to be helpful |
09:22 | <MikeSmith> | but he says there may be occasions where someone who knows what they are doing actually *wants* to write something in NFD |
09:23 | <MikeSmith> | and gives as an example, if, say, you write some javascript to do normalization, you have to be able to write some of the data in NFD for the algorithm to work |
09:29 | <MikeSmith> | so, summary from discussion with him is that, yeah, it's appropriate for it to be a warning (as opposed to an error) |
09:29 | <MikeSmith> | and that it's appropriate for that warning to be emitted for content as well as attribute values |
09:47 | <MikeSmith> | hsivonen: r12a points me to this: |
09:47 | <MikeSmith> | http://lists.w3.org/Archives/Public/public-i18n-core/2011AprJun/0085.html |
12:30 | <Shiningnorance> | hello |
12:30 | <Shiningnorance> | did you guys actually write html5? |
12:32 | <Workshiva> | If you mean the actual spec text, Hixie did that, yes |
12:33 | <Shiningnorance> | oh man, hixie is actually here! |
12:34 | <Shiningnorance> | according to Introducing HTML5, Hixie moved to Google! |
12:34 | <Ms2ger> | Well, he did |
12:35 | <Shiningnorance> | He's awesome! |
12:40 | <Shiningnorance> | It's funny, most of you guys have Pokemon-like names :> |
12:43 | <Philip`> | Hixie is everywhere |
12:44 | hsivonen | thought Dashimon was the only pokemon name around here |
12:45 | <Shiningnorance> | Oh that may explain why I felt something weird in my pants |
12:47 | <Workshiva> | hsivonen: Pokemon names don't actually end in mon |
12:47 | <Workshiva> | A better guess would be Digimon |
12:48 | <hsivonen> | Workshiva: shows how little I know about *mon |
12:53 | <Workshiva> | hsivonen: Then you should be careful about labeling names as pokemon, people might think you're an expert ;) |
12:54 | Shiningnorance | thought hsivonen was a pokemon expert. |
12:58 | <hsivonen> | Workshiva: sorry |
13:11 | <MikeSmith> | I know all about pokeman |
13:11 | <MikeSmith> | I have a 7th-degree experts status in pokeman |
13:41 | <Workshiva> | MikeSmith: I guess that's required to get residence in Japan? |
13:52 | asmodai | buries MikeSmith in Yu-Gi-Oh! cards |
15:10 | <Shiningnorance> | exit |
18:24 | Philip` | wonders if someone has mentioned that if there's some way to improve script loading by modifying scripts and you want to load jQuery with it, it'd be much easier to get jQuery modified than to add features into every browser engine to work around hypothetical unmodifiability |
18:26 | <Ms2ger> | I'm afraid you're wrong, jquery has been set in stone |
18:27 | <Philip`> | Oh, in that case browsers could just bundle jQuery and maybe even port it all to C++ so they don't have to do run-time compilation at all |
18:27 | <Philip`> | So the problem's solved either way |
18:28 | <gsnedders> | Philip`: Port it to C++ when browser vendors are moving stuff to JS? :P |
18:28 | <tomasf> | implement jQuery in hardware and sell it as a dongle |
18:30 | <Philip`> | gsnedders: JS is overrated |
18:30 | <Philip`> | C++ is the language of the future |
18:31 | <jcranmer> | Philip`: pssh, everyone knows that basic is where its at |
18:32 | <Philip`> | Someone needs to write a BASIC-to-LLVM compiler, and then attach it to that LLVM-to-JS compiler |
18:34 | <Philip`> | http://stevehanov.ca/blog/index.php?id=92 - ooh |
18:37 | <zewt> | Philip`: i did point that out, yes :) |
18:38 | <Philip`> | zewt: Ah, good, then I don't need to have said anything :-) |
18:40 | <zewt> | http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2011-May/031799.html |
18:41 | <AryehGregor> | gsnedders, browser vendors are only moving non-performance-sensitive stuff to JS, right? Parts of jQuery are probably performance-sensitive. |
18:42 | <paul_irish> | 10min of playing Snake later... thanks Philip` ;) |
18:46 | <jgraham> | AryehGregor: You like poking sleeping bears I see :) |
18:46 | <AryehGregor> | Occasionally. |
19:06 | <gsnedders> | AryehGregor: Depends what you mean by perf-sensitive. Moz playing around with NodeList in JS, that seems fairly perf vital. |
19:08 | <gsnedders> | AryehGregor: The vital point is the gain from being able to inline stuff (and potentially optimize based upon that), the removal of the cost of calling into host code, versus the less good general optimization it'll get from the compiler |
19:08 | <AryehGregor> | Interesting point. |
19:09 | <Ms2ger> | gsnedders, that's still written in C++, though |
19:09 | <gsnedders> | Ms2ger: I saw something from someone (bz?) about experimenting with it. |
19:09 | <Ms2ger> | With proxies, but not in JS |
19:10 | <gsnedders> | Ms2ger: Ah. |
19:12 | <gsnedders> | AryehGregor: An obvious simple optimization made possible by moving, say, Node.prototype.cloneNode(boolean deep) to JS is you can inline it and then possibly remove the irrelevant deep branch if it is called with a constant argument |
19:12 | <AryehGregor> | That's one jump. Surely that can't be a significant perf improvement. |
19:13 | <AryehGregor> | Conditional jump, I should say. |
19:13 | <AryehGregor> | But still, one instruction. |
19:14 | <Ms2ger> | Jumps are hard, let's go shopping |
19:14 | <gsnedders> | AryehGregor: That depends if you do it as foreach (children as child) if (deep) or the other way around |
19:14 | <AryehGregor> | Well, so just do it the other way around. |
19:15 | <gsnedders> | AryehGregor: Also branch prediction isn't perfect, removing jumps can give you gains. |
19:21 | <gsnedders> | Does anyone know what happened in the end wrt all the discussions about having two interoperable implementations before finalizing ES3.1? |
19:23 | <gsnedders> | (Because, well, obviously we don't. There are known compatibility issues with actually implementing the spec.) |
19:34 | <bga_> | gsnedders es3 and es5/6? |
19:47 | <gsnedders> | bga_: ES3.1 == ES5 |
19:48 | <bga_> | es5 nonstrict |
19:49 | <gsnedders> | bga_: It's the progressive update before Harmony, so it's all of ES5. |
19:49 | <bga_> | ok |
19:53 | <bga_> | i hope - vendors will continue to support es3 (i mean, improve jit, optimizations, etc) |
19:53 | <AryehGregor> | Vendors use the exact same engine for all JS versions, I hope. |
19:55 | <bga_> | one asi -> bytecode engine and many parsers |
21:09 | <Hixie> | jgraham: getting 500s again |
21:10 | <Ms2ger> | You could set anolis up locally ;) |
21:10 | <Hixie> | woah, getting 500s even for the non-w3c one this time |
21:10 | <Hixie> | Ms2ger: no, i hit CPU limits if i do that |
21:11 | <Ms2ger> | Hmmm |
21:11 | <Ms2ger> | You could write smaller specs? :) |
21:11 | <Hixie> | our specs are already too small and spread out |
21:11 | AryehGregor | is glad he doesn't have to deal with these crazy VPS things, dedicated hosting FTW |
21:12 | <AryehGregor> | Alternatively, VPS would be okay if it were pay-by-usage instead of flat fees. Then you could use some extra CPU or memory occasionally and not have to pay much extra for it. |
21:13 | <AryehGregor> | nearlyfreespeech.net is pay-by-usage, but it's shared hosting only, alas. They observe that they can absorb Slashdottings at a one-time cost to you of a few dollars, as compared to a fixed-resources model where you'd have to pay a fortune to be able to withstand a Slashdotting. |
21:15 | <Ms2ger> | Sounds like that would be somewhat harder to set up with non-shared hosting |
21:16 | <AryehGregor> | Well, I really meant that the problem is they only allow you to run websites off the servers, not run random processes on them. |
21:16 | <AryehGregor> | Shared servers where you can run random processes along with other users would work okay. |
21:16 | <AryehGregor> | Like a job-server setup. |
21:17 | AryehGregor | estimates that running a low-traffic site on nearlyfreespeech.net that consists solely of a modest amount of static content would cost <$0.10/month, which is nice, because that's in line with how much they actually pay to provide it |
21:19 | <AryehGregor> | I'd totally look into it if I didn't have unlimited root access to two dedicated 16-core servers with 16 GB of RAM each, paid bandwidth of 10Mbps at 95th percentile, and a total of ~2.1TB of raw 10k RPM storage. |
21:20 | <AryehGregor> | For free. |
21:20 | <TabAtkins> | AryehGregor: Yes, that's about what I paid at first. At this point my montly hosting runs around 50c/month. |
21:20 | <AryehGregor> | TabAtkins, ah, you use them? So does my brother (ephraimgregor.com), and the site he runs for my mother (writingaboutart.org). |
21:21 | <Hixie> | i'd consider moving too if i didn't have unlimited disk, bandwidth, users, domains, etc at dreamhost basically for free |
21:21 | <TabAtkins> | Yeah, I've used nfsn for several years. |
21:21 | <Hixie> | lunch, bbl |
21:22 | <Philip`> | AryehGregor: Pay-by-RAM-usage VPS doesn't seem particularly technically easy, since OSes and applications are generally all designed to eat as much RAM as possible |
21:22 | <Philip`> | so it'd be no different to simply paying up-front for a fixed amount |
21:23 | <AryehGregor> | Philip`, Linux can change the amount of RAM it uses at runtime, for instance if it's a VM and the hypervisor gives it more RAM. |
21:23 | <AryehGregor> | (maybe also if you physically install new RAM, but I dunno if the hardware supports that, never tried) |
21:23 | <AryehGregor> | There are also "balloon drivers", recently, which try to free up RAM so it can be given back to the host if not enough is free. |
21:23 | <AryehGregor> | s/host/hypervisor/ |
21:24 | <AryehGregor> | So in theory, you could have it configured to automatically request more RAM as needed and forfeit it when not needed. |
21:24 | <Philip`> | That seems a bit more indirect than measuring actual usage, but there are certainly VPSes that let you buy more RAM and pay per hour and it's immediately available to the machine |
21:25 | <Philip`> | and you can probably tie it into some load monitoring system so it changes automatically, if you like living dangerously |
21:25 | <AryehGregor> | I dunno if virtualization is awesome enough yet to be able to do this kind of thing seamlessly. |
21:26 | <Philip`> | I've used gandi.net and added more RAM/CPU/bandwidth dynamically and it's worked seamlessly |
21:26 | <AryehGregor> | Well, unless your host is running clustering or is massively overprovisioned, it's unlikely your RAM is going to be able to upgrade itself by more than a few gigabytes. |
21:27 | <AryehGregor> | Unless they can shift the VM between machines transparently, which I'm under the impression can't be easily done yet, although maybe I'm wrong. |
21:28 | <Philip`> | The cloudy way to do it is to split your application across multiple machines so you don't have to worry too much about running out of physical resources on one, I guess |
21:28 | <AryehGregor> | I'd argue that VMWare Cluster should count as cloudy too. |
21:28 | Philip` | 's demands are modest enough to not need anything that fancy |
22:08 | <jamesr> | nfsn ftw |
22:10 | <AryehGregor> | nfsn? |
22:10 | <jamesr> | NearlyFreeSpeech.Net |
22:30 | <Hixie> | AryehGregor: dreamhost's vps lets you change the ram and cpu you're paying for any time you want, and prorates you |
22:30 | <Hixie> | AryehGregor: it even has an API, so if i cared i could make anolis switch to 4GB of RAM, run the sync, and then drop down to 400MB again |
22:30 | <AryehGregor> | I was about to suggest that. |
22:30 | <Hixie> | but it's easier for me to let jgraham maintain anolis :-) |
22:35 | <Philip`> | (Anolis needs 4GB of RAM?) |
22:38 | <Hixie> | that was just an example |
22:38 | <Hixie> | i think it's CPU it actually needs |