00:05:22  * _sorensenquit (Ping timeout: 245 seconds)
00:22:28  * TheJHquit (Ping timeout: 260 seconds)
00:54:16  <SubStack>curl -sSN http://browserling.com:9052
00:56:45  <misterinterrupt>THAT WAS RADLING
00:58:38  <rowbit>Hourly usage stats: [developer: 3, free: 18]
01:00:11  * isaacs_joined
01:01:25  <SubStack>isaacs_:
01:01:27  <SubStack>curl -sSN http://browserling.com:9052
01:02:16  <SubStack>ansi containers yay
01:03:42  * isaacsquit (Ping timeout: 245 seconds)
01:05:29  <isaacs_>SubStack: neato
01:05:31  * elliottcablejoined
01:05:48  * isaacs_changed nick to isaacs
01:09:22  <misterinterrupt>"Just look at all that grault in your hair!"
01:24:40  <isaacs>SubStack: Watch this: http://vimeo.com/9270320
01:25:25  <isaacs>spoiler alert: The single most important metric in predicting software quality is line count, regardless of language.
01:31:24  <SubStack>watching
01:37:58  <simcop2387>LOUDBOT: search catonmat.net
01:37:59  <LOUDBOT>simcop2387: <pkrumins:#stackvm [1]> I AM SELF EMPLOYED AS A BLOGGER AT WWW.CATONMAT.NET.
01:40:38  * hij1nxquit (Quit: hij1nx)
01:44:09  <SubStack>I think I've seen this one
01:44:12  <SubStack>watching again though
01:52:06  <isaacs>maxogden: will there be video of the taco conf talks?
01:53:39  * isaacsquit (Remote host closed the connection)
01:58:38  <rowbit>Hourly usage stats: [free: 8]
02:02:28  * ryan_stevensquit (Quit: Leaving.)
02:27:38  * ryan_stevensjoined
02:40:24  * isaacsjoined
02:47:19  <SubStack>isaacs: I'm now thinking about how to passively collect development metrics in a distributed fashiopn in order to perform science
02:49:17  <SubStack>also thinking about how to test my hypothesis that lots of tiny libs is a better idea than big apps
02:58:38  <rowbit>Hourly usage stats: [free: 9]
03:05:58  <devaholic>SubStack: could you have people who use testling fill out a survey about their application they are testing and then use the number of errors based on how many tests they run to draw some conclusions?
03:06:03  <devaholic>assuming they opt in to the process
03:07:23  <SubStack>oh I was thinking more about other dev tools
03:07:32  <SubStack>like collecting statistics through fleet
03:07:39  <SubStack>in an opt-in basis
03:07:46  <SubStack>testling stats could be neat though
03:08:02  <devaholic>mm
03:08:34  <devaholic>i was thinking they provide some metrics like number of modules, time spent, lines of code for the application, i dunno what else
03:10:45  <devaholic>could be difficult though, because people who write lots of tests could end up having more fail even though the code has less bugs so there isnt necessarily a correlation
03:15:05  * misterinterruptquit (Quit: Leaving.)
03:52:07  * stlsaintjoined
03:58:38  <rowbit>Hourly usage stats: [free: 7]
04:02:28  * stlsaintquit (Ping timeout: 245 seconds)
04:19:12  <SubStack>1100 github friends hooray!
04:21:51  * ryan_stevensquit (Quit: Leaving.)
04:22:40  * tilgovijoined
04:35:00  * ryan_stevensjoined
04:38:04  <isaacs>SubStack: https://github.com/substack/node-identifier/blob/master/index.js
04:38:14  <isaacs>SubStack: you know about crypto.randomBytes(n)?
04:39:00  <isaacs>SubStack: crypto.randomBytes(18).toString('base64') boom. done.
04:39:36  <SubStack>that can have a leading digit
04:40:52  <isaacs>SubStack: so start it with _ or i or something
04:45:52  <SubStack>could work
04:58:38  <rowbit>Hourly usage stats: [free: 10]
05:06:00  * stlsaintjoined
05:24:47  * stlsaintquit (Ping timeout: 240 seconds)
05:32:57  * mikealjoined
05:34:01  * tilgoviquit (Ping timeout: 245 seconds)
05:50:30  <SubStack>there should be a website for aggregating software engineering experimental results
05:58:38  <rowbit>Hourly usage stats: [free: 13]
06:03:41  * mikealquit (Quit: Leaving.)
06:21:41  <SubStack>isaacs: https://github.com/joyent/node/issues/3240#issuecomment-5665608
06:25:11  <isaacs>SubStack: dont' ever not pipe stderr anywhere.
06:25:16  <isaacs>SubStack: yoer' getting an EBADF
06:27:35  <isaacs>stdin error in worker { [Error: read EBADF] code: 'EBADF', errno: 'EBADF', syscall: 'read' }
06:27:43  <SubStack>o_O
06:28:01  <SubStack>aha yeah getting that
06:28:14  <SubStack>why is that even the case?
06:28:42  <isaacs>SubStack: too immersed in not that right now.
06:28:43  <isaacs>sorry
06:28:52  <isaacs>must finish tacoconf talk
06:29:01  <isaacs>tanf coco talk
06:29:07  <isaacs>coco tanftalk
06:29:13  <isaacs>coco tata nflk
06:29:32  <SubStack>haha
06:29:40  <SubStack>I know the feeling.
06:29:56  <isaacs>i'm resorting to randomly rearranging letters symmetrically
06:29:58  <SubStack>my guess is it's just the communication mechanism thingy getting in the way somehow
06:30:03  <isaacs>yep.
06:30:06  <isaacs>almost certainly
06:30:19  <isaacs>i think it uses stdin for the ipc
06:30:32  <SubStack>that would do it
06:30:42  <SubStack>so nodejitsu should just not use fork() I'm guessing
06:30:47  <SubStack>and use spawn() instead since that works fine
06:31:12  <isaacs>yeah, i don't know why they do that
06:31:25  <isaacs>they have some strong feelings about how they absolutely must have node-core ipc in it
06:31:36  <isaacs>but whatever, that's gonna be a lot simpler in 0.8 anyway
06:32:13  <SubStack>fork() doesn't seem to be pulling its weight in core frankly
06:32:30  <SubStack>baked-in ipc should really need to pay rent here
06:33:20  <SubStack>still it seems wrong that spawn() shouldn't get a new stdin
06:34:32  * mikealjoined
06:37:04  <isaacs>SubStack: yeah, so, we're splitting up the pieces in 0.8, and in 0.9 we can revisit that api and see if it's really working for us
06:37:34  <isaacs>i think it might make the most sense to do built-in fork/cluster IPC using fd=4
06:37:36  <SubStack>goodness, the other crazy thing is that I can't even find a call to fork() in haibu in the first place
06:37:49  <SubStack>fd=4 would be sufficiently out of the way
06:37:57  <isaacs>oh, or 3 i mean
06:38:11  <isaacs>4 is already used for start.d or some shit
06:38:24  <isaacs>(one of the "fancy stdio" use cases)
06:38:33  <isaacs>i kinda thought we already put the channel on fd 3 though...
06:38:37  <isaacs>maybe i'm confused
06:38:58  <SubStack>it seems really messed up that if you ever do a fork() in an upstream process it removes your ability to pipe stdin to anything you spawn()
06:39:18  <SubStack>obliterates your ability to reuse any code that spawn()s anything and writes to its stdin
06:40:02  <SubStack>this is why fanciness doesn't belong in core :p
06:48:57  <isaacs>well, fork is kind of experimental in 0.6
06:49:06  <isaacs>didn't it debut in that version?
06:49:12  <isaacs>along with cluster?
06:56:48  * devaholicquit (Remote host closed the connection)
06:58:08  <SubStack>isaacs: there's no function-level stability though
06:58:14  <SubStack>in the docs
06:58:19  <SubStack>Stability: 3 - Stable
06:58:25  <SubStack>for child)process
06:58:29  <SubStack>but that is patently false
06:58:38  <rowbit>Hourly usage stats: [free: 29]
06:58:51  <isaacs>yeah, it is function-level, if there's a thingie on the functino
06:59:02  <SubStack>oh
06:59:10  * st_lukejoined
06:59:22  <isaacs>stable = api backwards compatibility will be preserved, but if underlying things move around, funky edge cases may break.
06:59:55  <isaacs>4 = api locked - will not even add to this api, it's locked, 5 = locked - we will not touch this code without damn good reason
06:59:56  <st_luke>Substack: you at stackhouse?
07:00:05  <SubStack>st_luke: yep
07:02:05  <SubStack>isaacs: at the very least, .fork() could use a separate stability annotation from the rest of child_process
07:02:12  <SubStack>to clearly demonstrate its experimental character
07:02:16  <isaacs>sure
07:11:55  <maxogden>TACOCONF WILL BE TELEVISED
07:12:01  <maxogden>WHAT DID YHOU SAY ROBOT
07:12:06  <maxogden>WHY ARE YOU SO VULGAR ROBOT
07:12:10  <maxogden>GODDAMN IT
07:12:30  * st_lukequit (Remote host closed the connection)
07:14:57  <Raynos>SubStack: https://gist.github.com/545efc2fa8fe3c3d8e14
07:15:19  <Raynos>Access errors in my code bubble up as the minified tokens
07:16:29  <Raynos>updated gist to show exampel code snippet
07:17:48  <Raynos>The other thing that blows my mind is that I get an "c[d] is undefined" instead of "undefined is not a function"
07:18:31  * xaqquit (Remote host closed the connection)
07:18:39  * tilgovijoined
07:19:33  * xaqjoined
07:21:02  <Raynos>SubStack: What version is the firefox nightly?
07:21:41  * hij1nxjoined
07:24:41  <Raynos>SubStack: Ok, I need to run my tests on a firefox 12 instance :(
07:37:27  * xaqquit (Remote host closed the connection)
07:40:19  * tilgoviquit (Remote host closed the connection)
07:42:37  <Raynos>SubStack: pkrumins: Authentication server temporarily down. Try again soon.
07:53:15  * xaqjoined
07:54:40  * st_lukejoined
07:56:15  * hij1nxquit (Quit: hij1nx)
07:57:12  * ryan_stevensquit (Quit: Leaving.)
07:58:38  <rowbit>Hourly usage stats: [free: 37]
08:01:33  * ryan_stevensjoined
08:04:11  * ryan_stevensquit (Client Quit)
08:13:31  * isaacsquit (Remote host closed the connection)
08:33:26  <SubStack>so request has pretty much jumped the shark :/ https://github.com/mikeal/request/commit/efc0ea44d63372a30011822ad9d37bd3d7b85952#commitcomment-1323218
08:34:02  <SubStack>but, for now I sleep
08:34:15  <SubStack>perchance to dream of tacos and taco-related confs
08:35:07  <SubStack>where is that pkrumins >_<
08:37:40  * alessioalexjoined
08:41:24  * xaqquit (Remote host closed the connection)
08:47:04  * st_lukequit (Ping timeout: 250 seconds)
08:49:50  * st_lukejoined
08:58:38  <rowbit>Hourly usage stats: [developer: 1, free: 19]
09:01:13  * st_luke_joined
09:04:52  * st_lukequit (Ping timeout: 272 seconds)
09:14:50  * st_luke_quit (Remote host closed the connection)
09:38:14  <Raynos>SubStack: Is there some kind of flag that I can use to say "this code is running on a testling server". So that I can distinquish between testling and running the code in my own browser (using browserify, so process.title === browser wont work)
09:55:44  * alessioalexquit (Remote host closed the connection)
09:58:38  <rowbit>Hourly usage stats: [free: 21]
10:20:00  <rowbit>/!\ ATTENTION: (default-local) raynos2@... successfully signed up for developer browserling plan ($20). Cash money! /!\
10:20:00  <rowbit>/!\ ATTENTION: (default-local) paid account successfully upgraded /!\
10:20:22  <Raynos>\o/
10:36:17  * TheJHjoined
10:58:38  <rowbit>Hourly usage stats: [free: 6]
11:15:03  * pkruminsjoined
11:58:38  <rowbit>Hourly usage stats: [free: 12]
12:17:36  * ITproquit (Ping timeout: 265 seconds)
12:18:03  * ITprojoined
12:30:24  * TheJHquit (Quit: goodbye)
12:58:38  <rowbit>Hourly usage stats: [free: 11]
13:58:38  <rowbit>Hourly usage stats: [free: 8]
14:32:24  * st_lukejoined
14:43:57  <st_luke>SubStack: are you awake? I'm going to go get some coffee
14:51:30  <rowbit>/!\ ATTENTION: (default-local) chad@... successfully signed up for developer browserling plan ($20). Cash money! /!\
14:51:31  <rowbit>/!\ ATTENTION: (default-local) paid account successfully upgraded /!\
14:53:16  * st_lukequit (Remote host closed the connection)
14:58:38  <rowbit>Hourly usage stats: [developer: 1, free: 24]
15:11:36  <SubStack>wooo!
15:13:39  * st_lukejoined
15:22:04  * mikealquit (Quit: Leaving.)
15:28:54  <Raynos>Do the hourly usage stats reflect minutes or hours of use?
15:30:04  <SubStack>number of sessions
15:32:41  <Raynos>is a session the number of curl requests
15:32:51  <Raynos>or a session is the number of users sending curl requests in that hour
15:34:41  <SubStack>browserling sessions
15:37:46  <Raynos>oh so not testling
15:37:47  <Raynos>I see
15:44:51  <rowbit>/!\ ATTENTION: (default-local) Somebody in the developer group is waiting in the queue! /!\
15:47:31  <SubStack>oh craps
15:48:20  <pkrumins>oh no
15:48:30  <Raynos>is that me?
15:48:36  <Raynos>it is me :D
15:48:52  <Raynos>> Get a paid plan to skip this queue!
15:48:53  <Raynos>:D
15:49:10  <rowbit>/!\ ATTENTION: (default-local) Somebody in the developer group is waiting in the queue! /!\
15:49:16  * st_luke_joined
15:49:27  * st_lukequit (Disconnected by services)
15:49:29  <SubStack>Raynos: don't worry, detective pkrumins is on the case!
15:49:30  * st_luke_changed nick to st_luke
15:49:39  <Raynos>it's cool
15:49:48  <Raynos>I dont need to use it, just checking whether its better then 3 months ago :D
15:50:02  <Raynos>expend resources making sure the auth server doesnt go down again >_>
15:50:07  <pkrumins>it will be super better really soon
15:50:12  <pkrumins>auth isnt really down
15:50:17  <pkrumins>it's a bug in testling!
15:50:20  <Raynos>I see
15:50:22  <pkrumins>i just have to restart it
15:50:28  <pkrumins>and suddenly it works, without me touching auth!
15:50:33  <pkrumins>here, o
15:50:46  <Raynos>is there a list of things I should avoid doing that make testling crash? :P
15:50:46  <pkrumins>here, i'll just type tt in the terminal and that will get the testling session open for me
15:51:07  <pkrumins>and restarted
15:51:25  <SubStack>once testling is using seaport this bug goes away
15:51:33  <SubStack>but we can't do that until the new seaport code goes live
15:51:36  <pkrumins>true!
15:51:39  <Raynos>is that because seaport restarts dead processes
15:51:44  <pkrumins>launching!
15:52:14  <SubStack>Raynos: also because it uses airport which has symmetric pings
15:52:17  <SubStack>on account of upnode
15:52:20  <Raynos>I was thinking of writing a thin abstraction on top of testling and node-tap that allows me to run the same unit tests on testling service and on node since the APIs are similar
15:52:46  <SubStack>yep!
15:52:48  * isaacsjoined
15:52:52  <SubStack>I've thought the same thing
15:52:56  <SubStack>since they are pretty similar
15:53:01  <Raynos>I also want to write a browser output thing for testling. is that stuff that should be external or PR'd into testling?
15:53:37  <SubStack>a results page that runs in the browser?
15:53:40  <Raynos>yeah
15:53:45  <Raynos>I wrote one but its really ugly
15:54:01  <Raynos>just change process.output.write to document.body.innerHTML +=
15:54:02  <SubStack>I'd rather just have testling work locally with local browsers like how it works remotely
15:54:23  <SubStack>command-line text output is super nice!
15:54:27  <Raynos>thats cool to, but it needs to run in real browsers
15:54:30  <Raynos>rather then in jsdom
15:54:33  <SubStack>yes
15:54:36  <SubStack>this is the plan
15:54:50  * _sorensenjoined
15:54:56  <Raynos>isnt that significantly harder to implement then a browser results page?
15:55:35  <Raynos>browser result page also includes running the tests in that browser and the option to expose global tokens so you can mess with them in the browser console
15:55:48  <Raynos>so it also solves the debugging issue by having an interactive REPL kind of
15:57:46  <Raynos>SubStack: do you have an internal road map for testling you can share?
15:58:38  <rowbit>Hourly usage stats: [developer: 1, free: 15]
15:58:51  <pkrumins>make testling work like selenium through postmessage
15:58:59  <pkrumins>then make testling work in your browsers
15:59:09  <SubStack>yep!
15:59:26  <SubStack>feature parity in the local testling with the remote testling
16:01:18  <Raynos>fair enough
16:01:29  <Raynos>doesnt releasing a local testling hurt the business model?
16:02:16  <Raynos>better phrased as what are the differences between the local and remote one that makes me want to use the remote one?
16:02:41  <pkrumins>we dont know
16:02:53  <pkrumins>we'll just make it and see w[D[D[D[Dhat happens
16:03:08  <Raynos>awesome :D
16:03:29  <Raynos>i totally believe in open source all the things and still make money
16:03:38  <Raynos>I just dont believe in it enough to put my money where my mouth is
16:11:01  <SubStack>yeah the problem with testling is that not enough people are using it
16:11:14  <SubStack>so we can fix that by letting you run more of it yourself!
16:11:42  <SubStack>it's not like we're in the position of protecting some entrenched cash cow or anything
16:16:16  <Raynos>makes sense
16:27:42  * ITproquit (Read error: No route to host)
16:33:23  * isaacsquit (Remote host closed the connection)
16:34:37  * isaacsjoined
16:35:10  * isaacsquit (Remote host closed the connection)
16:54:21  * _sorensenquit (Quit: _sorensen)
16:57:47  * _sorensenjoined
16:58:38  <rowbit>Hourly usage stats: [developer: 3, free: 20]
17:12:44  <SubStack>wi
17:12:46  <SubStack>wups
17:27:16  * st_lukequit (Remote host closed the connection)
17:36:09  * hij1nxjoined
17:52:34  * AvianFluquit (Quit: Leaving)
17:56:30  * AvianFlujoined
17:58:38  <rowbit>Hourly usage stats: [developer: 7, free: 31]
18:01:58  * ryan_stevensjoined
18:25:47  <Raynos>pkrumins: when will the range of browsers be updated?
18:26:48  * xaqjoined
18:49:12  <pkrumins>Raynos: as soon as i launch here
18:49:16  <pkrumins>firefox 12 etc
18:49:18  <pkrumins>chrome 18
18:51:55  * xaqquit (Remote host closed the connection)
18:52:41  <Raynos>define "launch here"
18:52:47  <Raynos>launch === deploy?
18:53:04  <Raynos>IE10 consumer preview would be sexy as well
18:53:40  <Raynos>timestamping the nightly firefox / chrome canary / opera next builds with like mm/yy would be cool too
18:53:58  <Raynos>or stating that the they are updated every day with the latest nightly build (which I dont think is the case)
18:54:23  <pkrumins>ie10 isn't coming any time soon
18:54:33  <pkrumins>firefox nightly, opera next are updated nightly at 3am
18:54:34  * ryan_stevensquit (Quit: Leaving.)
18:55:10  <pkrumins>launch == deploy, yes
18:55:41  <pkrumins>new servers here with IE6, IE7, IE8
18:58:38  <rowbit>Hourly usage stats: [developer: 1, free: 6]
19:02:17  <Raynos>pkrumins: Didnt know the nightly builds were updated nightly, awesome.
19:02:27  <Raynos>Strange how my tests with firefox nightly were not behaving as expected :\
19:25:56  <rowbit>/!\ ATTENTION: (default-local) eagsalazar@... successfully signed up for developer browserling plan ($20). Cash money! /!\
19:25:57  <rowbit>/!\ ATTENTION: (default-local) paid account successfully upgraded /!\
19:27:04  * wiwilliajoined
19:35:47  <wiwillia>http://teespring.com/tacoconf
19:35:58  <wiwillia>pkrumins - can you shoot substack a message for me?
19:38:43  * wiwilliaquit
19:51:13  <Raynos>pkrumins: https://gist.github.com/c4cab67924996bd6ee14
19:51:20  <Raynos>testling is saying "no u"
19:58:38  <rowbit>Hourly usage stats: [developer: 2, free: 10]
19:58:38  <rowbit>Daily usage stats: [developer: 19, free: 412]
20:27:22  * st_lukejoined
20:46:59  * st_lukequit (Remote host closed the connection)
20:51:16  <yorick>Raynos: it does that sometimes, if you test on more than 2 browsers
20:51:30  <Raynos>i'm running it only one browser though
20:51:43  <Raynos>you can see the single browser in the gist command
20:51:43  <yorick>and sometimes it's just having a bad 15 minutes
20:51:51  <Raynos>Btw do you have a recommendation on how to bug report?
20:51:57  <yorick>I should warn you that it's quite buggy
20:52:08  <Raynos>yorick: Oh wait, are you on the testling team? :D
20:52:12  <yorick>ehm, you can nag on IRC or twitter or possibly github or email them
20:52:14  <yorick>Raynos: nope
20:52:19  <Raynos>well it's still broken atm
20:52:20  <yorick>(I might like to be though)
20:52:21  <Raynos>for me anyway :\
20:52:29  <yorick>it's not usable here either
20:52:31  <Raynos>yorick: fork testling and fix it :D
20:52:49  <yorick>they're running all kinds of secret clustery stuff we can't know about
20:53:10  <yorick>and the instrumentation isn't publicly available either, I think
20:57:00  <Raynos>true
20:57:12  <Raynos>but you could still hack something together that allows us to run a shitty local version of the same thing :p
20:57:46  <yorick>https://github.com/substack/testling <-- it runs on node 0.4 only
20:57:57  <yorick>but it's basically a shitty local version of the same thing in jsdom
20:58:23  <yorick>IIRC SubStack is working on running it in your own browser
20:58:35  <yorick>(instead of fixing bugs that make it unusable to some degree)
20:58:38  <rowbit>Hourly usage stats: [developer: 1, free: 20]
20:59:06  <yorick>the instrumentation breaks things like function f(){}; function g(x, y) { return x == y }; equals(f, f);
20:59:19  <yorick>or doing useful things like removing event listeners
21:01:57  <yorick>(don't get me wrong though, I love what you guys are doing and it has a lot of potential and I suppose it's already used by some people to achieve awesome things in less time than before)
21:02:23  * AvianFluquit (Ping timeout: 250 seconds)
21:04:54  <yorick>and the modules you're producing are nice side-effects :)
21:08:34  <Raynos>yorick: I run that on node 0.6, works fine for me
21:09:13  <Raynos>i punched testling to work in my own browser
21:09:16  <Raynos>it kind of barely works
21:09:27  <Raynos>but it can be trivially fixed to work in your own browsers temporarily
21:13:13  * hij1nxquit (Quit: hij1nx)
21:19:57  * st_lukejoined
21:20:16  * AvianFlujoined
21:30:29  <SubStack>hooray! http://teespring.com/tacoconf
21:30:59  <ik>Why is that a thing
21:32:18  <Raynos>SubStack: If the tshirts go over 30 does it end or does it only end after 7 days?
21:34:04  <Raynos>SubStack: permission to mail my tshirt to your house because im too cheap to pay $3 for international shipping and will be in USA soon
21:34:21  <Raynos>:\ it costs more then $3 to go back and forth to substacks house to pick it up
21:34:22  <ik>oh
21:34:27  <Raynos>money safe plan fail!
21:34:29  <ik>SubStack: I've got all kinds of things I want mailed to your house
21:34:50  <ik>Sat May 12 17:33:71 EDT 2012
21:43:38  * st_luke_joined
21:46:29  * st_lukequit (Ping timeout: 265 seconds)
21:51:16  * st_luke_quit (Remote host closed the connection)
21:53:49  <Raynos>https://gist.github.com/2669295#file_0usage.js
21:53:56  <Raynos>Has SubStack written something similar
21:54:00  <Raynos>I'm almost sure he must have
21:54:40  <Raynos>ah findit
21:58:38  <rowbit>Hourly usage stats: [developer: 2, free: 14]
22:13:32  * st_lukejoined
22:48:33  * st_lukequit (Read error: Connection reset by peer)
22:58:38  <rowbit>Hourly usage stats: [developer: 2, free: 7]
23:17:55  * ryan_stevensjoined
23:49:09  * stlsaintjoined
23:52:06  * ryan_stevensquit (Quit: Leaving.)
23:57:56  * xaqjoined
23:58:38  <rowbit>Hourly usage stats: [developer: 1, free: 8]