00:17:32  * DarkGodquit (Ping timeout: 255 seconds)
01:03:42  * kazuponjoined
01:22:16  * kazuponquit (Remote host closed the connection)
01:23:22  * kazuponjoined
02:23:26  * a_lequit (Remote host closed the connection)
02:23:59  * a_lejoined
04:02:50  * kazuponquit (Remote host closed the connection)
04:12:28  * luastonedjoined
04:18:34  * a_lequit (Ping timeout: 260 seconds)
04:33:24  * kazuponjoined
04:38:03  * kazuponquit (Ping timeout: 240 seconds)
04:46:48  * kazuponjoined
05:11:27  * kazuponquit (Remote host closed the connection)
05:13:28  * kazuponjoined
05:32:17  * tim_smartquit (Quit: leaving)
06:44:44  * a_lejoined
06:45:24  * a_lequit (Remote host closed the connection)
07:28:49  * DarkGodjoined
09:14:52  * DarkGodquit (Read error: Connection reset by peer)
09:17:17  * DarkGodjoined
09:23:46  * SouLquit (Ping timeout: 260 seconds)
09:34:32  * luastoned1joined
09:36:58  * luastonedquit (Ping timeout: 250 seconds)
09:40:06  * DarkGodquit (Ping timeout: 250 seconds)
09:53:45  * kazuponquit (Remote host closed the connection)
09:54:25  * kazuponjoined
09:59:48  * kazuponquit (Remote host closed the connection)
10:04:20  * kazuponjoined
10:20:20  * kazuponquit (Remote host closed the connection)
10:20:35  * kazuponjoined
10:24:18  * DarkGodjoined
10:30:55  * kazuponquit (Remote host closed the connection)
11:15:22  * DarkGodquit (Ping timeout: 240 seconds)
11:28:33  * DarkGodjoined
13:03:20  * luastoned1quit (Ping timeout: 250 seconds)
13:06:55  * luastonedjoined
13:46:26  * a_lejoined
13:47:52  * DarkGodquit (Ping timeout: 240 seconds)
13:49:29  * DarkGodjoined
13:54:39  * DarkGodquit (Quit: Leaving)
13:55:44  * DarkGodjoined
14:01:09  * kazuponjoined
14:14:34  * a_lequit (Remote host closed the connection)
14:15:47  * DarkGodquit (Ping timeout: 272 seconds)
14:17:02  * a_lejoined
14:19:38  * DarkGodjoined
14:27:23  * kazuponquit (Remote host closed the connection)
14:44:52  * songgaoquit (Quit: ZNC - http://znc.in)
14:45:50  * songgaojoined
14:48:09  * DarkGodquit (Quit: Leaving)
14:50:09  * DarkGodjoined
14:56:40  * kazuponjoined
15:56:47  <creationix>If you edit your /etc/hosts to point luvit.io to you can see the new server
15:57:08  <creationix>the directory listing, in particular is much better http://luvit.io/dist/
15:58:28  * kazuponquit (Remote host closed the connection)
15:58:37  <creationix>rphillips: ^
15:58:54  <creationix>the new server is on Rackspace using archlinux and systemd
15:59:01  <rphillips>nice!
15:59:02  <creationix>hosted with the new Wheaty platform
15:59:40  <rphillips>never saw wheaty before
15:59:45  <creationix>screenshot https://cloudup.com/cJbAxv7AhQ7
15:59:54  <creationix>I wrote wheaty this week
16:00:24  <creationix>it was originally to replace the wheat engine for howtonode.org, but it’s much more general purpose and powerful
16:00:32  <creationix>more like github.io mixed with php
16:00:50  <creationix>but js, not php
16:01:31  <creationix>I just need to make the wheaty deployment auto pull updates like the old system did
16:01:43  <rphillips>very cool
16:01:50  <creationix>the old system used the github REST API to read repos, it would sometimes break when github was down
16:02:03  <creationix>the new version does actual clones over TCP so it should work much better when github is down
16:04:36  <creationix>if you want to dig in to it, the actual server is https://github.com/creationix/wheaty/blob/master/samples/node-mount.js (but with different config obviously)
16:05:15  <creationix>to use it, you basically tell it what repos to serve at what domains and what runtimes to allow to execute in each https://github.com/creationix/wheaty/blob/master/samples/sites-config.js
16:05:41  * kazuponjoined
16:11:06  <creationix>ok, just switched luvit.io to use rackspace dns nameservers. once that transfers all traffic will use the new site
16:29:46  * kazuponquit (Remote host closed the connection)
16:40:44  * a_lequit (Remote host closed the connection)
16:41:23  * a_lejoined
16:44:15  * a_le_joined
16:45:35  * a_lequit (Read error: Connection reset by peer)
16:54:08  * a_le_quit (Remote host closed the connection)
16:54:46  * a_lejoined
17:04:48  * vifinojoined
17:47:53  * vifinoquit (Quit: Ze Cat now leaves...)
20:00:57  <creationix>can someone verify that http://luvit.io/dist/ is showing the new site with pretty listings?
20:01:05  <creationix>dns should be propagated for most people by now
20:01:11  <creationix>rphillips: ^
20:01:21  <rphillips>nice!
20:01:38  <creationix>still no auto-pull, but that should be soon
20:02:08  <creationix>I just implemented groups so that I can group sites into their own processes with custom uids
20:02:28  <creationix>the 3 production sites (creationix.com, luvit.io, and tedit.creationix.com) have their own dedicated process
20:02:34  <creationix>the experimental sites have another
20:02:48  <creationix>when people sign up for hosting at creationix.com, I can give each customer their own process
20:03:09  <creationix>(eventually I could even use linux containers for each for better security and control)
20:03:31  <rch>still looks old to me x.x
20:03:40  <creationix>rch: where are you located?
20:03:50  <rch>i'm on some corporate vpn so it could be silly
20:04:13  <creationix>if you can edit your /etc/hosts file, add for luvit.io to preview the new version
20:04:30  <creationix>also I did change the DNS this morning. some edges take up to two days to get it
20:04:35  <creationix>most people get it in a few hours
20:05:08  <rch>ah looks good
20:06:58  <creationix>all the wheaty sites are served from bare git repos on disk
20:07:04  <creationix>the actual files are never unpacked
20:07:29  <creationix>it seems quite fast considering it has to find and extract each file from packfiles
20:07:43  <creationix>it even clones the data on demand, supporting submodules
20:07:59  <creationix>though cloning the luvit-releases repo took a while (it’s huge)
20:08:10  <rch>does it cache the unpacked result in the serving process?
20:08:30  <creationix>nope
20:08:47  <creationix>though I do cache the hashes of all read files and store the response headers
20:09:05  <creationix>so conditional requests can serve fast 304 responses without ever rendering anything
20:09:08  <rch>oh so you can let clients cache with etags? nice
20:09:10  <creationix>(works for dynamic php-style code too)
20:09:34  <creationix>I’m considering adding an option to cache the bodies in ram so that multiple clients can share the same render
20:09:39  <rch>because it runs the code and caches the hash of the output?
20:09:57  <creationix>it’s all based on git and git semantics, so there are some interesting properties
20:10:17  <creationix>but basically, I record all files that are read from the virtual filesystem for a request and store those paths and hashes with the request url
20:10:40  <creationix>when the next request url comes in, I check to see if all the paths read still have the same hashes, if they do, I know the result will be the same and skip rendering
20:11:09  <creationix>since the filesystem is virtual, I can run this platform in a chrome app or a browser too
20:11:16  <creationix>anything that supports js-git
20:12:01  <creationix>the etag itself is either provided by the renderer or falls back to sha1 of body
20:12:17  <creationix>but that’s never checked, just stored and used for conditional requests matching
20:13:52  <rch>creationix │ (works for dynamic php-style code too) <—— not sure i get this
20:14:36  <creationix>rch: for example, the sites aren’t just static content
20:14:47  <creationix>you can write PHP style dynamic scripts that render the content on the fly
20:14:50  <creationix>https://github.com/creationix/exploder/blob/master/manifest.appcache
20:15:06  <creationix>that renders an always up-to-date AppCache manifest for a game
20:15:37  <rch>so anything chmod +x with a #! it will execute to produce the result?
20:15:41  <creationix>the caching system records all the paths that are “load”ed in the script and uses their path/hash combination for cache invalidatio
20:15:58  <creationix>rch: yep, but only for registered handlers. Currently it’s just “js"
20:16:08  <rch>ah i was wondering about that
20:16:11  <rch>so it parses the shbang
20:16:22  <rch>interesting
20:16:33  <rch>so for js does it run in new context or fork/spawn?
20:16:40  <rch>sorry for the pop quiz
20:16:59  <creationix>right now I’m using vm.runInNewContext
20:17:10  <creationix>but each user of the system has their own process group
20:17:20  <creationix>right now it’s just my sites in two groups (production and test)
20:17:33  <creationix>eventually I can use linux containers for proper jailing of user code
20:17:44  <creationix>you can sign up for the service at creationix.com
20:17:46  <rch>so right now it is like a pure git based paas
20:17:56  <creationix>exactly
20:18:02  <creationix>like github.io, but on steroids
20:20:47  <creationix>rch: here is my current config https://gist.github.com/creationix/f5484c654dc0a7a14338
20:21:15  <creationix>feed the configs to https://github.com/creationix/wheaty/blob/master/bin/wheaty-group.js#L19 if you want to run your own instance
20:24:04  <rch>nice
23:02:05  * luastonedquit (Quit: Leaving.)