00:00:01
| * ircretary | quit (Remote host closed the connection) |
00:00:10
| * ircretary | joined |
00:02:08
| <Raynos> | I dont know |
00:02:13
| <Raynos> | I dont operate on buffers |
00:02:29
| <Raynos> | I tend to deal with _write(jsonObject, null, cb) |
00:08:32
| <isaacs> | wel, that's what you'll get :) |
00:08:34
| <isaacs> | good news! |
00:16:21
| * alunny | joined |
00:19:07
| * saijanai_ | joined |
00:35:12
| * mirkok | quit (Quit: mirkok) |
00:50:19
| * shuaib | joined |
00:54:06
| * mikolalysenko | quit (Ping timeout: 264 seconds) |
00:54:25
| * mikolalysenko | joined |
00:56:37
| * dominictarr | quit (Quit: dominictarr) |
01:03:52
| * mikolalysenko | quit (Ping timeout: 256 seconds) |
01:04:45
| * mikolalysenko | joined |
01:24:51
| <ralphtheninja> | would anyone in the SF/Oakland area be up to lending me their couch a few days around NodeConf? |
01:27:58
| <substack> | ralphtheninja: I've got a cot |
01:28:16
| <substack> | if jjjjohnnny is down for more visiting hackerfolk |
01:28:20
| <Raynos> | ralphtheninja: arent you going to sleep there at nodeconf? |
01:28:36
| <Raynos> | Oh wait you mean before / after ? |
01:28:49
| <Raynos> | I have a spare mattress in SF |
01:31:26
| * dominictarr | joined |
01:34:07
| * mikeal | quit (Quit: Leaving.) |
01:37:55
| <ralphtheninja> | yeah I meant before and after, might as well stay a few days more if possible :) |
01:38:56
| <ralphtheninja> | haven't decided on exact dates yet, nice to know there is some backup to be found, thanks! |
01:39:09
| * mikeal | joined |
01:40:45
| * intabulas | quit (Read error: Connection reset by peer) |
01:41:11
| * intabulas | joined |
01:56:19
| * shuaib | quit (Quit: Textual IRC Client: http://www.textualapp.com/) |
01:57:34
| <dominictarr> | so Raynos I'm thinking how to explain the need for lock in level-update |
01:58:55
| <dominictarr> | basically - for level-update to work, it needs to guarantee that the key in question does not change in between the GET and PUT that the conditional update uses. |
01:59:59
| <dominictarr> | it's necessary to use locks to make the operations atomic |
02:00:24
| <dominictarr> | like in a single threaded event loop, it's basically a global lock on memory |
02:00:39
| <dominictarr> | that releases when the sync code has finished. |
02:01:21
| <dominictarr> | that means you can do atomic operations on any in memory datastructure |
02:03:22
| * saijanai_ | quit (Quit: saijanai_) |
02:15:15
| <dominictarr> | if you are gonna expose keys to async events, like over http, then you need to use locks (or something) to make sure the updates where deterministic. |
02:15:35
| <dominictarr> | although, another option would be to use an append-only model |
02:15:50
| <ralphtheninja> | append only ftw! :) |
02:15:57
| <dominictarr> | but that would mean every put is saved as put(key+timestamp) |
02:16:04
| <ralphtheninja> | hehe i know Raynos wants that too :) |
02:16:28
| <dominictarr> | the problem with this is that you couldn't use get(key) |
02:16:34
| <ralphtheninja> | trade offs, they become so apparent when it comes to databases |
02:16:41
| <ralphtheninja> | nodnod |
02:16:54
| <dominictarr> | because the key it's saved in isn't gonna be known |
02:17:09
| <dominictarr> | you'd need to always do a range query instead |
02:17:21
| <dominictarr> | more like getLast(key) |
02:17:36
| <dominictarr> | and it would search backwards from get(key+'~') |
02:17:57
| <dominictarr> | it all depends on your use-case |
02:18:00
| <dominictarr> | ... |
02:18:02
| <ralphtheninja> | but if you call with put(key) and the db does _put(key+timestamp) internally and returns key+timestamp to you |
02:18:30
| <ralphtheninja> | like in couchdb where you get the _rev id (or whatever it's called) |
02:18:54
| <dominictarr> | in couchdb you don't need the _rev to request the document, |
02:19:00
| <dominictarr> | so it's not really the same |
02:19:30
| <dominictarr> | what couchdb has is more like level-update, with locks, and it reads the current value first |
02:19:37
| <ralphtheninja> | true, I was thinking of getting some kind of token back |
02:20:37
| <dominictarr> | ralphtheninja: I implemented a thing like that https://github.com/dominictarr/level-update/blob/master/hash-version.js |
02:20:42
| <Raynos> | I WANT ALL THE TINGS |
02:20:42
| <LOUDBOT> | SHAMWOW ABSORBS TEN TIMES ITS WEIGHT IN OLYMPIC DIVERS |
02:21:20
| <dominictarr> | wanting all the things is much more reasonable than wanting a thing that does everything. |
02:21:26
| <Raynos> | dominictarr: you never call getLast |
02:21:38
| <dominictarr> | ? |
02:21:50
| <Raynos> | your map-reduce-a-gic always creates and caches a computed view in leveldb under a known key |
02:22:12
| <dominictarr> | oh yeah, that works too |
02:22:50
| <dominictarr> | actually, that is the right way to do it |
02:23:27
| <dominictarr> | you should implement that, Raynos |
02:23:40
| <ralphtheninja> | I want to know more about that, how does it work? |
02:24:19
| <ralphtheninja> | level-view |
02:27:11
| <dominictarr> | it just uses level-live-stream, but reads ranges in the way the level-map-reduce sets them up |
02:27:28
| <dominictarr> | that is described in the plugin patterns page in the wiki |
02:28:51
| <ralphtheninja> | ok |
02:30:20
| <dominictarr> | Raynos: either of these methods would enable replication |
02:40:47
| * thatguydan | joined |
02:44:54
| * mikolalysenko | quit (Remote host closed the connection) |
02:45:30
| * ins0mnia | quit (Ping timeout: 276 seconds) |
03:11:22
| <Raynos> | I think its the correct way to do things |
03:11:39
| <Raynos> | you partition the db into two sections |
03:11:49
| <Raynos> | write only / append only section of the database with raw data |
03:11:57
| <Raynos> | which gets replicated / sharded |
03:12:16
| <Raynos> | and the mutative view section. i.e. map-reduce RAW data into nice keys with efficient reads |
03:19:25
| <dominictarr> | yeah, and you just cleanup the old appends that have been bundled |
03:19:26
| <ralphtheninja> | aah so you use a part of the db for the db :) |
03:19:47
| <dominictarr> | this will basically be like github.com/dominictarr/repred |
03:21:20
| <dominictarr> | another thing that would be really good about that model is that you can read the current state really fast |
03:21:28
| <dominictarr> | since it's a single key |
03:21:48
| <dominictarr> | and you can still read them within a range too |
03:23:26
| <ralphtheninja> | dominictarr: what do you mean with bundled appends? |
03:23:42
| <ralphtheninja> | like in merged updates? |
03:24:43
| <dominictarr> | bundle = reduce(updates, reduceFunction) |
03:25:38
| <dominictarr> | if reduceFunction is of type X = reduce(Xs, reducer) |
03:25:38
| <ralphtheninja> | ok |
03:26:03
| <dominictarr> | then you can just remove the old updates and replace it with the new one. |
03:26:15
| <dominictarr> | so, future reduces will be faster |
03:26:30
| <ralphtheninja> | gotcha |
03:26:31
| * mikolalysenko | joined |
03:27:55
| <dominictarr> | in this case, the types of updates will be dependent on the put… maybe it's better to access it via an abstraction like scuttlebutt |
03:28:08
| <dominictarr> | but maybe it's simple enough that you can just write custom ones |
03:28:57
| <dominictarr> | but probably… there are a few simple things that work well… so you can just reuse them, or a simple basis that you can expand on - like through for transform streams |
03:36:33
| <ralphtheninja> | seems level-update is growing |
03:37:25
| * mikolalysenko | quit (Ping timeout: 256 seconds) |
03:37:30
| <ralphtheninja> | need to feed it and nurture it properly :) |
03:39:33
| * mikolalysenko | joined |
03:41:32
| <ralphtheninja> | I want to fork bitcoin-server.js and make it talk to the namecoin network, that way we could get access to distributed dns directly in node |
03:42:03
| <ralphtheninja> | or you could just install namecoind and speak json-rpc with it, but it would be cool to have it completely in js |
03:43:04
| <ralphtheninja> | well, just an idea |
03:43:48
| * mikolalysenko | quit (Ping timeout: 248 seconds) |
03:56:35
| * ralphtheninja | quit (Ping timeout: 255 seconds) |
04:08:52
| * alunny | quit (Ping timeout: 248 seconds) |
04:20:33
| <Raynos> | dominictarr: never cleanup old appends ! |
04:20:37
| <Raynos> | That's destroying history |
04:23:57
| <dominictarr> | it's mixed into a new value |
04:24:20
| <dominictarr> | growing the history won't scale for things that are constantly updated |
04:24:44
| <dominictarr> | if the number of updates tend to a small number, it would be okay to keep them |
04:25:17
| <dominictarr> | but if you needed to represent, say, the players position, then you have to delete. |
04:25:30
| <dominictarr> | not to save space, but to save time when reading. |
04:33:16
| * AvianFlu | quit (Remote host closed the connection) |
04:38:48
| * mikolalysenko | joined |
04:46:07
| <Raynos> | dominictarr: you store the history on disk on the server |
04:46:21
| <Raynos> | Well yes sure you dont re-read the history |
04:46:32
| <Raynos> | but it has to be stored |
04:46:53
| <dominictarr> | okay, then… copy it to another db for archiving |
04:47:02
| <dominictarr> | but don't use it for the realtime stuff |
04:47:41
| <dominictarr> | the reason you use append-only & reduce is because it's friendly to concurrent updates |
04:48:09
| <dominictarr> | that is the most important thing, if you are interested in making a system that behaves predictably |
04:48:43
| <dominictarr> | and there are plenty of cases when you don't care about the history |
04:48:45
| <dominictarr> | potentially |
04:50:36
| <dominictarr> | anyway, the reduced value holds all the information you need to create the current state... |
04:52:22
| <Raynos> | agreed |
04:52:36
| <Raynos> | but real time and raw data is seperate |
04:52:43
| <Raynos> | they go into two different databases |
04:58:58
| <dominictarr> | yes, totally different usecases |
04:59:30
| <dominictarr> | once we get the clean separation thing happening, setting up stuff like this will be easy. |
05:40:42
| * mikeal | quit (Quit: Leaving.) |
05:43:35
| * mikeal | joined |
05:54:57
| <substack> | http://www.reddit.com/r/node/comments/17tjta/fsextra_drop_in_replacement_for_fs_adds_a_few/ |
05:55:04
| <substack> | Raynos jesusabdullah ^ |
05:55:42
| <Raynos> | lol |
05:56:17
| * mikolalysenko | quit (Ping timeout: 255 seconds) |
05:56:37
| <mbalho> | f sextra |
05:56:48
| <substack> | fSEXtra |
06:17:37
| <dominictarr> | substack: I'm getting tape exiting with 1 but reporting a passing test |
06:18:23
| <Raynos> | dominictarr: most likely not calling .end() on one of your tests |
06:18:38
| <dominictarr> | it reports that |
06:18:40
| <Raynos> | check to see whether there's an empty "# test name" at the bottom |
06:19:14
| <dominictarr> | # disconnect |
06:19:14
| <dominictarr> | error |
06:19:15
| <dominictarr> | ok 39 should throw |
06:19:17
| <dominictarr> | 1..39 |
06:19:18
| <dominictarr> | # tests 39 |
06:19:19
| <dominictarr> | # pass 39 |
06:19:20
| <dominictarr> | # ok |
06:19:39
| <dominictarr> | "error" is just logging |
06:19:59
| <substack> | odd |
06:20:05
| <substack> | the latest version? |
06:22:25
| <dominictarr> | 0.2.2 |
06:22:38
| <dominictarr> | oh, looks like raynos is right |
06:22:47
| <Raynos> | :3 |
06:22:51
| <dominictarr> | but it's not reporting the unfinished test |
06:23:04
| <Raynos> | it never reports unfinished tests for me |
06:23:17
| <Raynos> | probably because there are two code paths that exit 1 and only one reports |
06:29:59
| <dominictarr> | it exists 0 though |
06:30:05
| <dominictarr> | non zero, i mean |
06:35:18
| <dominictarr> | okay! got it working… |
06:35:27
| <dominictarr> | and mux-demux tests are now ported to tape |
06:35:28
| <dominictarr> | ! |
06:35:49
| <dominictarr> | is there a tool to ci.testlingify a module? |
06:36:33
| <Raynos> | nope |
06:39:10
| <substack> | you can just browserify tests and see what the console.log() output is in the browser console |
06:41:05
| <dominictarr> | substack: I mean, to add all the package stuff |
06:43:13
| <substack> | package stuff? |
06:45:07
| * mikeal | quit (Quit: Leaving.) |
06:46:48
| <dominictarr> | the stuff you have to put in the package.json |
06:47:06
| <dominictarr> | hmm, okay I'm getting some weirdness again |
06:47:11
| <dominictarr> | http://ci.testling.com/dominictarr/mux-demux |
06:49:39
| <substack> | ah |
06:50:28
| <substack> | do the tests require() the module like usual? |
06:51:51
| * mikeal | joined |
06:53:00
| <dominictarr> | yes |
06:53:03
| <dominictarr> | of course |
06:53:19
| <dominictarr> | ah, one thing is that require('..') doesn't work with browserify |
06:53:26
| <dominictarr> | you have to use require('../') |
06:53:45
| <dominictarr> | but it doesn't error early |
06:54:01
| <dominictarr> | it just returns undefined |
06:55:03
| <substack> | oh pesky |
06:55:22
| <substack> | require('..') didn't used to work |
06:55:24
| <substack> | is probably why |
06:56:21
| <substack> | oh the require() in the browser code probably messes it up |
06:56:28
| <substack> | but it works in the server-side bundling |
07:03:56
| <dominictarr> | yes |
07:04:00
| <dominictarr> | that makes sense |
07:06:05
| <dominictarr> | substack: if I just leave the browser tab open will it update with fresh results? |
07:07:20
| <dominictarr> | substack: pkrumins seems to only be running ie8 sometimes http://ci.testling.com/dominictarr/mux-demux |
07:10:14
| <substack> | it might be running tests |
07:20:52
| * slaskis | joined |
07:21:25
| <substack> | yep check it now |
07:21:33
| <substack> | logging in to see if the launcher crashed |
07:24:48
| * CryptoQuick | joined |
08:01:44
| <substack> | the launcher was having some issues it seems |
08:04:57
| * alunny | joined |
08:09:11
| * alunny | quit (Ping timeout: 245 seconds) |
08:12:34
| * dominictarr | quit (Quit: dominictarr) |
08:28:38
| * CryptoQuick | quit (Quit: CryptoQuick) |
08:34:07
| * thatguydan | quit (Ping timeout: 246 seconds) |
08:47:41
| * mirkok | joined |
09:22:34
| * mirkok | quit (Quit: mirkok) |
09:40:35
| * thatguydan | joined |
09:45:21
| * thatguydan | quit (Ping timeout: 256 seconds) |
10:19:05
| * nk109 | quit (Read error: Connection reset by peer) |
10:33:46
| * mirkok | joined |
10:39:48
| * slaskis | quit (Remote host closed the connection) |
10:41:41
| * mirkok | quit (Read error: No route to host) |
10:42:04
| * mirkok | joined |
10:42:10
| * mirkok | quit (Client Quit) |
10:53:57
| * dominictarr | joined |
10:59:58
| * on9 | joined |
11:06:36
| * slaskis | joined |
11:13:44
| * ralphtheninja | joined |
11:20:35
| <dominictarr> | substack: now I'm not getting any logging output at all for mux-demux… it just says that the test has failed |
11:27:02
| * dominictarr | quit (Quit: dominictarr) |
12:18:07
| * on9 | quit (Ping timeout: 246 seconds) |
12:26:01
| * fotoverite_ | joined |
12:26:22
| * Altreus | quit (Read error: Operation timed out) |
12:27:50
| * fotoverite | quit (Read error: Connection reset by peer) |
12:27:50
| * pikpik | quit (Ping timeout: 252 seconds) |
12:27:50
| * fotoverite_ | changed nick to fotoverite |
12:28:57
| * Altreus | joined |
12:30:53
| * on9 | joined |
12:41:41
| * ins0mnia | joined |
12:49:06
| * yorick | joined |
12:49:06
| * yorick | quit (Changing host) |
12:49:06
| * yorick | joined |
13:41:23
| * on9 | quit (Ping timeout: 248 seconds) |
13:52:27
| * pikpik | joined |
13:54:52
| * on9 | joined |
13:55:39
| <ins0mnia> | substack: Why not allow seaport.register() to return meta instead of meta.port? this was the service can know its own id as registered in seaport.. |
13:55:55
| <ins0mnia> | substack: was=way |
14:00:13
| <ins0mnia> | substack: or even just the id, other information can easily be looked based on that |
14:37:07
| * saijanai_ | joined |
15:06:06
| * intabulas | quit (Remote host closed the connection) |
15:23:58
| * CryptoQuick | joined |
15:43:39
| * AvianFlu | joined |
15:48:13
| * mikolalysenko | joined |
16:13:08
| * intabulas | joined |
16:15:10
| * defunctzombie_zz | changed nick to defunctzombie |
16:29:00
| * shuaib | joined |
16:31:42
| * dguttman | joined |
16:34:20
| <defunctzombie> | isaacs: thoughts on making it impossible to push to npm unless you have a LICENSE file or a license field in package.json? |
16:34:35
| <defunctzombie> | otherwise it is quite dangerous to use npm modules from a legal standpoint |
16:35:13
| * marcello3d | joined |
16:35:25
| <marcello3d> | allo |
16:36:58
| <defunctzombie> | \o/ |
16:48:42
| * mikolalysenko | quit (Ping timeout: 252 seconds) |
16:55:55
| * LOUDBOT | quit (Remote host closed the connection) |
16:56:03
| * LOUDBOT | joined |
16:56:52
| * LOUDBOT | quit (Remote host closed the connection) |
16:57:00
| * LOUDBOT | joined |
16:57:15
| * LOUDBOT | quit (Remote host closed the connection) |
16:57:22
| * LOUDBOT | joined |
16:57:50
| <isaacs> | defunctzombie: it's not that dangerous. |
16:57:56
| <isaacs> | defunctzombie: and no, we're not going to start requiring licenses. |
16:58:31
| <defunctzombie> | how is it not an issue? |
16:59:45
| <marcello3d> | express.js is technically copyright/closed source due to dependencies :( |
16:59:57
| <defunctzombie> | isaacs: if there is no license, then anyone using the code in a closed project is taking a risk that they are violating something |
17:00:08
| <marcello3d> | and request.js |
17:00:31
| <marcello3d> | defunctzombie: even open source, no? |
17:00:37
| <isaacs> | defunctzombie: yeah. if you're doing proprietary dev, be careful. |
17:00:43
| <isaacs> | defunctzombie: caveat emptor |
17:00:56
| <defunctzombie> | isaacs: that is a weak argument imho |
17:01:08
| <defunctzombie> | isaacs: why run a registry meant for open source code |
17:01:27
| <defunctzombie> | isaacs: if you don't want to ensure that people actually understand the licenses under which they publish? |
17:04:00
| <isaacs> | defunctzombie: we should just say that if you don't provide a license, it's new-BSD |
17:04:13
| <defunctzombie> | marcello3d: ^ |
17:04:21
| <isaacs> | defunctzombie: maybe make people accept an End User License Agreement popup before they start using npm |
17:04:21
| <defunctzombie> | isaacs: why is that better than require license? |
17:04:30
| <defunctzombie> | you should not silently re-license my code |
17:04:43
| <isaacs> | defunctzombie: because requiring a license is ceremony. |
17:05:01
| <defunctzombie> | ceremony in what sense? |
17:05:13
| <defunctzombie> | it requires you to specify the licensing for your code when others re-use it |
17:05:16
| <isaacs> | defunctzombie: an extra step between "write some code" and "use some code" |
17:05:20
| <defunctzombie> | what if I want to publish a GPL module |
17:05:21
| <isaacs> | defunctzombie: a smart default is better. |
17:05:41
| <defunctzombie> | isaacs: you can't just write some code and use some code in our system |
17:05:42
| <isaacs> | defunctzombie: if you want to publish a GPL module, you're already an insane license-fetishist, and you've put a 50-page license on your code. |
17:05:47
| <defunctzombie> | isaacs: you need to live in the reality |
17:05:57
| <defunctzombie> | and that reality is that licensing does matter for companies |
17:06:10
| <defunctzombie> | isaacs: you are making assumptions |
17:06:11
| <isaacs> | node users who don't specify a license want their stuff to be used under a liberal non-copyleft oss license. |
17:06:17
| <isaacs> | defunctzombie: find me a counter-example. |
17:06:27
| <isaacs> | defunctzombie: someone who *didn't* put a license in their code, and *didn't* want bsd/mit |
17:06:28
| <defunctzombie> | counter example of what? |
17:06:57
| <defunctzombie> | I just don't see why you want to auto default people to a license versus just asking them to specify one? |
17:07:11
| <defunctzombie> | why not default to MIT? |
17:07:14
| <defunctzombie> | why BSD? |
17:07:25
| <isaacs> | defunctzombie: because the weather is nicer. |
17:07:41
| <defunctzombie> | you are just forcing what you think is the way on people, versus just making a requirement to have a license and suggesting one |
17:07:58
| <Raynos> | isaacs: no licence means this is mine and I give you zero rights to use it |
17:08:15
| <isaacs> | Raynos: no license means nothing, actually. |
17:08:18
| <isaacs> | Raynos: it MIGHT mean that. |
17:08:18
| <defunctzombie> | I think that is not so nice personally when having an open community |
17:08:31
| <guybrush> | no license means what Raynos said |
17:08:38
| <defunctzombie> | isaacs: no license is technically VERY unsafe to use |
17:08:58
| <defunctzombie> | if you don't realize this then it may be important to review your licenses :D |
17:09:00
| <fotoverite> | isaacs: I agree with not making in mandatory |
17:09:18
| <guybrush> | but it depends on the country or something, didnt investigate further after finishing the class haha |
17:09:19
| <fotoverite> | defunctzombie: We should make license especially MIT or BSD standard and best practice |
17:09:47
| <defunctzombie> | fotoverite: what you are saying is not related to requiring a license |
17:10:10
| <fotoverite> | defunctzombie: You can't dictate how people in the open operate. |
17:10:10
| <guybrush> | defunctzombie: why do you want to force people to add a license? |
17:10:11
| <Raynos> | isaacs: what about defaulting the licence field to BSD/MIT in package.json if author doesn't set one |
17:10:13
| <defunctzombie> | fotoverite: you cannot just relicense my code (certainly without asking) |
17:10:26
| <guybrush> | just let em decide what they want to do, ie how it currently is |
17:10:40
| <fotoverite> | that's because of copyright defunctzombie |
17:10:53
| <defunctzombie> | fotoverite: I live in reality |
17:10:58
| <defunctzombie> | not some made up fairy tale |
17:10:58
| <fotoverite> | Copyright exists without a license |
17:11:06
| <defunctzombie> | and reality dictates certain things for companies |
17:11:17
| <fotoverite> | Yes but open source is not about companies |
17:11:18
| <defunctzombie> | guybrush: that is unsafe |
17:11:25
| <guybrush> | why? |
17:11:33
| <defunctzombie> | guybrush: without a license I cannot safely use the code |
17:11:41
| <guybrush> | if i dont want to put a license into my code i just wont do it anyway |
17:11:41
| <defunctzombie> | licenses are very different in permissibility |
17:11:45
| <fotoverite> | defunctzombie: this is why you get people to understand that and do so because of social rewards not because NPM requires it. |
17:11:51
| <defunctzombie> | guybrush: then you can't publish |
17:11:58
| <guybrush> | oh i can :9 |
17:11:59
| <defunctzombie> | fotoverite: that is bullshit |
17:12:10
| <defunctzombie> | social rewards my ass |
17:12:15
| <fotoverite> | how so that' s how the world worked for a very long time. |
17:12:17
| <defunctzombie> | if it isn't required, people won't do it |
17:12:29
| <fotoverite> | Is that why the substack method has taken off? |
17:12:33
| <defunctzombie> | why run an unsafe registry? |
17:12:35
| <fotoverite> | because it's required? |
17:12:45
| <fotoverite> | Same reason github doesn't require licenseing |
17:13:00
| <defunctzombie> | github is not a registry |
17:13:15
| <defunctzombie> | I am not saying there is some law requiring people have licenses |
17:13:16
| <Raynos> | github is different |
17:13:27
| <guybrush> | npm is also different :D |
17:13:29
| <Raynos> | Actually it isnt but its weird |
17:13:53
| <Raynos> | defunctzombie: why do you care |
17:14:04
| <Raynos> | your not some corporate cubicle boy |
17:14:19
| <guybrush> | basically (thats just my opinion) when you put something into the open internet, you want others to use it |
17:14:24
| <guybrush> | licenses are stupid |
17:14:25
| <fotoverite> | We all should care but making NPM police is not the solution |
17:14:34
| <fotoverite> | Besides then you get things like the WTF license |
17:14:41
| <fotoverite> | which is worse then no license in most ways |
17:14:42
| <guybrush> | if you dont want to share something just dont put it in public internet haha |
17:15:19
| <guybrush> | there should be a law |
17:15:24
| <guybrush> | everything you find is yours |
17:15:45
| <guybrush> | for internet ofc |
17:15:58
| <guybrush> | for information in general |
17:17:10
| <marcello3d> | requiring a license on npm publish is the same as what you're saying, guybrush |
17:17:13
| <guybrush> | most people treat information like that anyway |
17:17:20
| <marcello3d> | it's just making it legally clear |
17:17:51
| * on9 | quit (Ping timeout: 260 seconds) |
17:18:21
| <isaacs> | Raynos: well, we already set the license field to BSD in npm init by default |
17:18:49
| <fotoverite> | isaacs: Why bsd instead of MIT? |
17:19:14
| <isaacs> | fotoverite: the weather is nicer. |
17:19:25
| <fotoverite> | Point taken |
17:19:50
| <isaacs> | srsly, have you ever BEEN to berkeley? it's gorgeous. Cambridge has like 3 nice months a year. 2 in the spring and one in the fall. |
17:19:54
| <guybrush> | i like the spelling of MIT more than BSD :D |
17:20:11
| <marcello3d> | you guys are all wrong, clearly. I use zlib |
17:20:20
| <isaacs> | the zlib lic is pretty nice, too |
17:20:24
| <marcello3d> | (but if there were a commonly used stanford license, I'd use that) |
17:20:47
| <marcello3d> | zlib doesn't have all that scary uppercase |
17:20:50
| <marcello3d> | and bsd has too many versions |
17:21:53
| <isaacs> | marcello3d: i sort of see bsd's many versions as a feature. |
17:22:25
| <isaacs> | marcello3d: i like occasionally just putting "license":"BSD" in package.json, without a LICENSE file, to make IP wanks' heads exploe. |
17:22:38
| <defunctzombie> | Raynos: I care because even for my closed source stuff it is unsafe |
17:22:48
| <marcello3d> | "license":"bsd" is good enough for me |
17:22:54
| <marcello3d> | it's a clear state of intent |
17:23:01
| <defunctzombie> | guybrush: your opinion is not legal stature tho |
17:23:11
| <marcello3d> | but nothing in package.json, no license file, nothing in readme—I can't even guess |
17:23:12
| <defunctzombie> | so unfortunately it doesn't meant anything when I get sued :) |
17:23:38
| <defunctzombie> | fotoverite: at least then you know what the license is and can avoid it |
17:23:43
| <guybrush> | defunctzombie: yes i agree, i should put an oss license into my code - but most of the time i just dont do it because my code sucks anyway |
17:23:46
| <defunctzombie> | fotoverite: code without a license is unknown |
17:24:48
| <defunctzombie> | the point is that unlicensed code has no permissions technically |
17:24:55
| <defunctzombie> | no matter what you may "think" about it |
17:24:57
| <guybrush> | but npm init actually makes me do it :) |
17:25:11
| <defunctzombie> | your thoughts don't matter to the legal system |
17:25:55
| <isaacs> | you guys are so CUTE. |
17:26:03
| <isaacs> | playing lawyer. |
17:26:08
| <isaacs> | ;P |
17:26:11
| <fotoverite> | :P |
17:26:21
| * shama | joined |
17:26:35
| <isaacs> | code without a license IS unknown. it could be anything from "you're not allowed to even be reading this" to "you can claim that you wrote it" |
17:26:55
| <isaacs> | corporations are rightly very timid about using code with an unspecified license, because they have more to lose. |
17:27:11
| <isaacs> | for me personally? i know that fotoverite or Raynos or substack or mbalho are not going to sue me for using some code that they wrote. |
17:27:28
| <marcello3d> | but someone might buy them out and sue you :) |
17:27:29
| <fotoverite> | of course we all will also add a license. :D |
17:27:34
| <guybrush> | seriously, putting stuff on github with a license that says "you are not allowed to use this" is just trolling |
17:27:40
| <fotoverite> | I'm unbuyable |
17:27:44
| <marcello3d> | no one would use node.js if it didn't have a license |
17:27:52
| <marcello3d> | what if joyent started suing everyone |
17:27:56
| <marcello3d> | who didn't run on their cloud |
17:28:04
| <isaacs> | if someone from facebook or yahoo or microsoft wants to use some code of mine, and they post an issue that it lacks a license, it's a 15-second fix |
17:28:08
| <isaacs> | this is a non-issue. |
17:28:14
| <marcello3d> | anyways |
17:28:14
| <isaacs> | let those who care about it care about it. |
17:28:16
| <marcello3d> | I wrote this module |
17:28:17
| <marcello3d> | https://github.com/marcello3d/node-licensecheck |
17:28:34
| <marcello3d> | that's how I figured out that express.js and request depend on things that have no license |
17:28:40
| <Raynos> | isaacs: and thats how I make money :D |
17:28:49
| <Raynos> | naive people assume I dont fuck them over |
17:28:50
| <fotoverite> | So go and ask them to add a license |
17:28:59
| <guybrush> | rofl Raynos |
17:30:12
| * on9 | joined |
17:38:58
| * mikeal | quit (Quit: Leaving.) |
17:46:16
| * shama | quit (Quit: shama) |
17:46:36
| * shama | joined |
17:57:22
| * mikolalysenko | joined |
18:02:57
| * defunctzombie | changed nick to defunctzombie_zz |
18:04:27
| * alunny | joined |
18:06:54
| * dguttman | quit (Quit: dguttman) |
18:09:52
| * mikeal | joined |
18:18:21
| * mikeal | quit (Ping timeout: 245 seconds) |
18:38:00
| * dguttman | joined |
18:45:30
| * mikeal | joined |
18:47:56
| * on9 | quit (Ping timeout: 245 seconds) |
18:58:03
| * defunctzombie_zz | changed nick to defunctzombie |
19:01:21
| * on9 | joined |
19:21:55
| * st_luke | joined |
19:35:10
| * thatguydan | joined |
19:39:01
| * mikeal | quit (Quit: Leaving.) |
19:43:16
| * AvianFlu | quit (Remote host closed the connection) |
19:46:07
| * marcello3d | quit (Remote host closed the connection) |
19:46:49
| * wiwillia | joined |
19:48:16
| <defunctzombie> | hij1nx: https://github.com/shtylman/chrome-socket |
19:48:19
| <defunctzombie> | you might be interested in that |
19:48:31
| <defunctzombie> | and https://github.com/shtylman/node-abe that |
19:48:40
| <defunctzombie> | given your node-chrome repo :) |
19:49:15
| <defunctzombie> | I played around with making desktop apps with chrome and node style apis/js bundles a while back.. it is awesome! |
20:01:44
| * alunny | quit (Ping timeout: 255 seconds) |
20:09:14
| * mikeal | joined |
20:14:50
| * dominictarr | joined |
20:15:54
| * mikeal1 | joined |
20:16:16
| * mikeal | quit (Read error: Connection reset by peer) |
20:16:39
| * alunny | joined |
20:18:30
| * on9 | quit (Ping timeout: 256 seconds) |
20:24:16
| * dominictarr_ | joined |
20:26:01
| * dominictarr | quit (Ping timeout: 240 seconds) |
20:26:02
| * dominictarr_ | changed nick to dominictarr |
20:33:53
| * mikeal1 | quit (Quit: Leaving.) |
20:34:43
| * on9 | joined |
20:35:01
| * mikeal | joined |
20:42:40
| * defunctzombie | changed nick to defunctzombie_zz |
20:53:52
| * mikolalysenko | quit (Ping timeout: 256 seconds) |
20:57:22
| * thatguydan | quit (Quit: thatguydan) |
20:59:07
| * AvianFlu | joined |
20:59:31
| * on9 | quit (Ping timeout: 260 seconds) |
21:00:51
| * calvinfo | quit (Ping timeout: 245 seconds) |
21:02:39
| * calvinfo | joined |
21:12:23
| * on9 | joined |
21:15:35
| * simcop2387 | quit (Excess Flood) |
21:16:17
| * slaskis | quit (Remote host closed the connection) |
21:17:37
| * simcop2387 | joined |
21:18:13
| * defunctzombie_zz | changed nick to defunctzombie |
21:19:29
| * mikolalysenko | joined |
21:22:57
| * st_luke | quit (Remote host closed the connection) |
21:27:24
| * mikolalysenko | quit (Ping timeout: 276 seconds) |
21:29:03
| * thatguydan | joined |
21:31:32
| * niix | joined |
21:38:05
| * mikolalysenko | joined |
21:56:23
| * thatguydan_ | joined |
21:57:29
| * thatguydan | quit (Ping timeout: 255 seconds) |
21:57:30
| * thatguydan_ | changed nick to thatguydan |
21:58:25
| * dominictarr | quit (Ping timeout: 246 seconds) |
21:59:06
| * dominictarr | joined |
22:02:10
| * CryptoQuick | quit (Ping timeout: 244 seconds) |
22:05:40
| * CryptoQuick | joined |
22:27:15
| * CryptoQuick_ | joined |
22:29:55
| * CryptoQuick | quit (Ping timeout: 248 seconds) |
22:29:56
| * CryptoQuick_ | changed nick to CryptoQuick |
22:32:52
| * defunctzombie | changed nick to defunctzombie_zz |
22:35:24
| * shuaib | quit (Quit: Textual IRC Client: http://www.textualapp.com/) |
22:52:23
| * defunctzombie_zz | changed nick to defunctzombie |
22:57:27
| * st_luke | joined |
23:09:43
| * on9 | quit (Ping timeout: 260 seconds) |
23:46:00
| <hij1nx> | defunctzombie: its great, but generally not practical. i dont want to get deeply invested in anyone's api when it comes to building a desktop app with JS. I want it to just be plain JS/HTML/CSS, etc. so that's why i made node-chrome -- because it should be simple, no cef or any complicated binding. |
23:46:27
| <defunctzombie> | hij1nx: that was the point of those libs |
23:46:38
| <defunctzombie> | to not use the chrome apis and expose something else |
23:46:49
| <hij1nx> | defunctzombie: im referring more to other more complex libraries |
23:46:56
| <defunctzombie> | gotcha |
23:47:17
| <Raynos> | mbalho: `document.write` ftw |
23:47:30
| * AvianFlu | quit (Remote host closed the connection) |
23:47:46
| <hij1nx> | defunctzombie: also, both of the libs you pointed me at are for stream interfacing, correct? |
23:48:15
| <hij1nx> | defunctzombie: ah yes. slight problem i had with crx files |
23:48:19
| <defunctzombie> | hij1nx: yea |
23:48:26
| <hij1nx> | defunctzombie: have you looked at crx-less? |
23:48:31
| <defunctzombie> | nope |
23:48:54
| <hij1nx> | defunctzombie: i'd love to be able to specify a crx-less extension and leverage built-in tcp server |
23:49:13
| <hij1nx> | defunctzombie: but its odd, and unstable. |
23:49:20
| <hij1nx> | (according to chrome hackers) |
23:49:33
| <defunctzombie> | huh |
23:49:47
| <hij1nx> | defunctzombie: https://developers.google.com/chrome/apps/docs/no_crx#installcall |
23:50:17
| <hij1nx> | defunctzombie: this simply does not work (as far as i cant tell, looking at trunk it seems unfinished) |
23:50:22
| <defunctzombie> | yea just been reading that |
23:50:35
| <defunctzombie> | hij1nx: seems very new |
23:50:42
| <defunctzombie> | when I explored chrome apps I hadn't seen this yet |
23:51:14
| <hij1nx> | defunctzombie: yes, but i've been talking with some people who are working on it, i may be able to support it soon |
23:51:45
| <hij1nx> | this would add some level of complexity though. i love how dead simple node-chrome is. its almost simple enough ;) |
23:51:52
| <defunctzombie> | I don't quite see how it is different than putting the app in the app store |
23:52:41
| <defunctzombie> | hij1nx: the thing with node chrome is it requires node |
23:52:50
| <defunctzombie> | for what tho? |
23:52:59
| <hij1nx> | distrobution, silent-forced-installs, etc. |
23:53:12
| <hij1nx> | defunctzombie: lol |
23:53:25
| <hij1nx> | defunctzombie: it also requires chrome ;) |
23:53:33
| <defunctzombie> | I guess when I was playing around with the chrome apps I just used js to write the app but was on top of chrome socket apis |
23:53:38
| <defunctzombie> | so node was not needed |
23:53:57
| <defunctzombie> | I saw chrome as filling the functionality that node does on the server |
23:54:10
| <defunctzombie> | hij1nx: https://github.com/shtylman/eyersee |
23:54:14
| <defunctzombie> | that was my toy project |
23:54:27
| <defunctzombie> | I used node only to build the bundled js |
23:54:56
| <hij1nx> | defunctzombie: i mean, node and chrome should really have feature parity, imo. the only difference is that one has no human interface. |
23:55:11
| <defunctzombie> | hij1nx: kinda.. I don't buy into node's networking api |
23:55:16
| <defunctzombie> | but yes |
23:55:17
| <defunctzombie> | I agree |
23:55:30
| <defunctzombie> | (more or less) :D |
23:55:44
| <hij1nx> | defunctzombie: node is the answer to your unwanted house guests, weight problem, hair loss and nail biting problem. |
23:55:53
| <hij1nx> | hehe ;) |
23:55:56
| <defunctzombie> | o.o |
23:56:37
| <hij1nx> | </sarcasm> |
23:57:00
| <guybrush> | why not just start a local node-server and browse it with chrome? |
23:57:11
| <hij1nx> | guybrush: sure, why not not |
23:57:32
| <hij1nx> | why have desktop apps at all |
23:57:42
| <defunctzombie> | guybrush: the argument is you don't need to have the node server to have an app |
23:57:50
| <defunctzombie> | at least that is one possibility |
23:57:56
| <hij1nx> | different UX. |
23:58:07
| <defunctzombie> | guybrush: chrome has socket apis, that is all you are using node for |
23:58:15
| * intabulas | quit (Ping timeout: 252 seconds) |
23:58:40
| <guybrush> | i use node because of its module-system :) |
23:59:04
| <guybrush> | i kind of get the UX-thing, but really dont see it as a big thing |
23:59:12
| <hij1nx> | for some products, a browser is not the right user experience. |
23:59:15
| <defunctzombie> | guybrush: right, but the module system is not node |
23:59:18
| <guybrush> | just make a bookmark and its pretty good UX |
23:59:31
| <defunctzombie> | guybrush: the module system is independent of node ;) |
23:59:45
| <guybrush> | in windows you can make it all into a .bat and it works preeeetty nice |
23:59:47
| <hij1nx> | guybrush: just have them use vim, vim and sublimetext are basically the same right? |