00:00:01  * ircretaryquit (Remote host closed the connection)
00:00:09  * ircretaryjoined
00:03:01  * nk109joined
00:14:48  * Domenic_joined
00:18:35  <mmckegg>is github down for anyone else?
00:19:21  * Domenic_quit (Ping timeout: 256 seconds)
00:22:14  * thatguydanquit (Quit: thatguydan)
00:22:16  <mmckegg>dominictarr: (possibly) small issue when you get a chance https://github.com/dominictarr/level-live-stream/issues/2
00:23:01  <dominictarr>mmckegg: of that is a version problem
00:23:49  <dominictarr>I need to add a peerDependency
00:24:01  <dominictarr>what version of level-sublevel do you have?
00:24:02  <mmckegg>ah yes, i see - should have checked the latest version oops
00:24:33  <mmckegg>4.0.0
00:27:06  <dominictarr>what version of level hooks?
00:27:12  <dominictarr>npm ls level-hooks
00:27:36  <mmckegg>├─┬ [email protected]
00:27:37  <mmckegg>│ └── [email protected]
00:27:38  <mmckegg>└─┬ [email protected] invalid
00:27:38  <mmckegg> └── [email protected]
00:27:45  <mmckegg>there's the issue….
00:27:51  <mmckegg>possibly.
00:28:11  <mbalho>mmckegg: hey did your voxel + launchpad experiment ever get posted on github?
00:28:41  <mmckegg>mbalho: needs some work to get it working on the latest voxel version
00:28:53  <mmckegg>I've been a little distracted with the wonders of Web Audio API
00:28:55  <dominictarr>mmckegg: hmm, that is strange because LLS doesn't require level-hooks directly
00:29:00  <mbalho>mmckegg: oh sweet! yea it is a fun api
00:29:20  <mbalho>mmckegg: if you need help porting the API to newest voxel-engine lemme know, i have the changelog in my head but havent written it down yet :P
00:29:34  <dominictarr>can you delete the level-hooks under level-live-stream?
00:29:58  <mmckegg>I've replaced my need for Ableton live and all that other stuff, it was just getting in the way. Musicians NIH syndrome :)
00:30:09  <mmckegg>dominctarr: ok will give it a try
00:30:44  <mbalho>mmckegg: you shoudl talk to jjjjohnn1y about collaborating on client side audio modules, e.g. loop-* stuff
00:30:45  <dominictarr>mmckegg: sounds awesome, what are you using to generate the sounds?
00:31:03  <mbalho>mmckegg: he did https://github.com/NHQ/webaudio the other day
00:31:07  <mmckegg>Sampling
00:31:14  <mmckegg>at the moment, that's all...
00:31:20  <mmckegg>but it's a pretty nifty sampler
00:31:41  <mmckegg>and i've been working on a nice front end to go a long with it
00:31:59  <mmckegg>node-webkit is quite good for this stuff I've found, cuts down on the midi latency etc
00:33:13  <mmckegg>mbalho: I've rewritten most of the stuff to make it a lot more modular, will post if I get a chance this weekend.
00:34:07  <mmckegg>Now if only there was a way to support Web MIDI on the iPad.
00:34:16  <mbalho>haha yea
00:35:52  * mikealquit (Quit: Leaving.)
00:36:16  <mmckegg>domininctarr: strange still getting the error, totally removed live-stream and reinstalled it… same problem. will try reinstalling all modules
00:40:46  * dguttmanquit (Quit: dguttman)
00:40:48  <mmckegg>mbalho: got quite inspired by MLRV on that parallelogram site you showed me. I tried it out, but wasn't quite what I was after, but gave me the push to do my own audio experiment.
00:44:00  * thl0joined
00:44:35  <mmckegg>dominictarr: looks like my error is caused because I'm using it on a sublevel
00:45:21  <mmckegg>dominictarr: doesn't look like sub levels return the remover when hooks are added.
00:45:40  <dominictarr>mmckegg: that is a bug
00:45:41  <dominictarr>!
00:46:55  <dominictarr>fixing...
00:47:37  * st_lukejoined
00:47:38  <dominictarr>mmckegg: fixed in [email protected]
00:47:54  <mmckegg>btw really liking the new sub level approach, it's very nice
00:48:28  <dominictarr>thanks!
00:48:32  <mmckegg>success!
00:49:17  <mmckegg>dominictarr: are you coming to the wellington.js meet up tomorrow?
00:49:23  <dominictarr>yes
00:53:27  <mbalho>mmckegg: cool! yea MLRV is neat but it would be better in html5
00:54:30  <mmckegg>what i have built kind of is that, but a different approach to the button layout, and buttons that virally infect other buttons.
00:55:28  <mmckegg>with access to all this extra audio data, makes me want to rethink the visualiser. could do so much more with it now.
00:58:19  <dominictarr>gozala: Raynos how does a reducible tell me that it's finished?
00:58:34  <Raynos>dominictarr: `if (value === end) { /* it's empty */ }`
00:58:41  <dominictarr>thanks
00:58:43  <Raynos>`var end = require("reducible/end")`
00:59:08  <Raynos>dominictarr: most abstractions like `reducers/map`, `reducers/filter` and `reducers/takeWhile` simply do not call your callback with the `end` symbol
00:59:12  <Raynos>they just stop
00:59:23  <dominictarr>thats not good
00:59:26  <Raynos>`fold` also does not give you the end symbol
00:59:30  <gozala>they don't stop
00:59:43  <gozala>they propagate end through them
00:59:49  <dominictarr>that is good
00:59:50  <gozala>so map does not maps end
01:00:20  <gozala>and yes fold does not passés end either
01:00:42  <gozala>it returns reducible that is reduced to result of the fold
01:04:03  <mmckegg>anyone know what "TypeError: Cannot call method 'iterator' of null" normally mean when calling db.close?
01:07:23  <mmckegg>mmckegg: readStream still in progress, apparently.
01:07:40  * st_lukequit (Remote host closed the connection)
01:07:50  * CryptoQuickquit (Ping timeout: 272 seconds)
01:10:12  * thatguydanjoined
01:10:39  <rvagg>mmckegg: is your db open when you're calling close()?
01:11:09  <chilts>dammit, I forgot about Wellington.js (dominictarr and mmckegg)
01:11:10  <chilts>:(
01:11:12  <mmckegg>most definitely, I got around the issue by adding a very short setTimeout after the last read
01:11:31  <mmckegg>will see if nextTick also works
01:11:48  <rvagg>mmckegg: I'm not sure what you're doing but if you're doing a readStream().on('data') then use the 'end' event as a final
01:12:00  <rvagg>'close' isn't quite final, it just means the end of the data but not fully cleaned up
01:12:21  <dominictarr>mmckegg: rvagg maybe levelup/down needs a drain event?
01:12:32  <rvagg>db.readStream().on('data', console.log).on('end', console.log.bind(console, 'finished'))
01:12:33  * dominictarrquit (Read error: Connection reset by peer)
01:12:39  <mmckegg>ah, that may be it...
01:12:53  * tilgoviquit (Remote host closed the connection)
01:12:54  * dominictarrjoined
01:12:55  <rvagg>there is a 'drain' event but that's not really appropriate in most cases unless you're piping
01:13:25  <rvagg>or is that writeStream? I don't know, streams mess my head up some times
01:14:00  <mmckegg>It may be something to do with the fact that the database wasn't really open… or something
01:14:20  <mmckegg>Because I was using the non-callback open
01:14:36  <rvagg>yeah, a leveldown instance isn't actually created until open() is called; but levelup does an implicit open() for you anyway
01:15:02  <rvagg>mmckegg: actually......
01:15:06  <rvagg>I bet I know what the problem is
01:15:31  <rvagg>var db = require('levelup')('db').readStream()... probably won't work because of the delay hence your nextTick hack
01:15:52  <rvagg>either do this: levelup('db', function (err, db) { db.readStream() })
01:16:10  <rvagg>or this: var db = levelup('db'); db.on('ready', function () { db.readStream() ... })
01:16:26  <rvagg>but since we defer other operations we probably should defer readStream too!
01:16:38  <mmckegg>the read is working fine though, which is odd. I'm calling the db.close inside the 'end' of the read.
01:16:56  <rvagg>k
01:17:24  <rvagg>gotta run for now, let me know if you come up with anything interesting
01:17:27  <mmckegg>I'll do some isolated tests, and see if I can figure out
01:17:38  <mmckegg>could be something to do with a dominictarr module :)
01:17:47  <mmckegg>thanks
01:20:07  * dominictarrquit (Read error: Connection reset by peer)
01:20:33  * dominictarrjoined
01:24:15  * tilgovijoined
01:28:12  * dguttmanjoined
01:31:10  <mmckegg>chilts: too late now :( fills up so fast. There's always the bar afterwards though.
01:31:44  <mmckegg>chilts: or would that be gate crashing
01:32:17  <chilts>I think usually people can still go, except I've got an evening planned with my outlaws
01:43:25  * shamaquit (Remote host closed the connection)
01:56:12  <dominictarr>chilts: just turn up, they arn't gonna sit there with a list of names
01:56:56  <dominictarr>oh, your gang is having a bbq, better go, don't want to loose your patch.
01:57:04  * st_lukejoined
02:04:40  * dominictarrquit (Quit: dominictarr)
02:06:55  * defunctzombie_zzchanged nick to defunctzombie
02:23:01  <chilts>heh, indeed :)
02:26:14  * defunctzombiechanged nick to defunctzombie_zz
02:31:55  * st_lukequit (Remote host closed the connection)
02:46:49  * st_lukejoined
02:53:56  * thl0quit (Remote host closed the connection)
02:57:28  <hij1nx>rvagg: would love your feedback if you get a chance to play with levelweb at some point -- https://github.com/hij1nx/levelweb
02:58:02  <mbalho>had an idea for a website: nodescripts.org, a list of commonly asked problems and different + comparable ways of solving them
02:58:36  <rvagg>hij1nx: when I have time, I keep on getting excitedly caught up in this stuff and neglecting the stuff that I should be doing, that "work" stuff
02:58:52  <rvagg>hij1nx: but what I've seen from screenshots so far is exciting!
02:59:42  <rvagg>mbalho: if you make it open it could become like a hackernews of node, many nerds trying to prove they are smarter than each other with their particular approach
02:59:45  <rvagg>FTW.... or not
03:02:29  * ralphtheninjaquit (Ping timeout: 245 seconds)
03:02:43  <mbalho>rvagg: yea exactly
03:12:03  * jibayquit (Remote host closed the connection)
03:20:12  <hij1nx>mbalho: it would be cool to do something like this for node -- http://bonsaiden.github.com/JavaScript-Garden/
03:22:17  <st_luke>spend a bunch of time getting things installed on windows then went to build node
03:22:25  <st_luke>you cant build it without visual studio
03:22:27  <st_luke>gg microsoft
03:38:07  * mikealjoined
03:41:01  <mbalho>hij1nx: agreed, i started writing node for cats but never finished it
04:00:12  * AvianFluquit (Remote host closed the connection)
04:02:51  <chrisdickinson>mbalho: i'm working on something similar too :D
04:02:57  * AvianFlujoined
04:03:04  <chrisdickinson>though i got sidetracked with git: http://github.com/knode
04:09:14  <mbalho>chrisdickinson: is that gonna be your git in the browser app?
04:16:22  * mikealquit (Quit: Leaving.)
04:17:06  * mikealjoined
04:17:45  * mikealquit (Read error: Connection reset by peer)
04:17:48  * mikeal1joined
04:19:25  <chrisdickinson>mbalho: this is going to be a node knowledge site
04:19:53  <mbalho>ohhh
04:19:55  <chrisdickinson>articles about authors / styles, functionality "cage matches" (i.e., comparing several modules that do similar things)
04:20:11  <mbalho>cool, have you written any of the content yet?
04:20:19  <chrisdickinson>the original premise (and i think main source of content) will be "node modules you should know"
04:20:41  <chrisdickinson>not yet, it sprung out of my preparations for this talk: https://github.com/PDXNode/pdxnode/tree/master/2013-mar
04:20:41  * st_lukequit (Read error: Connection reset by peer)
04:20:58  * st_lukejoined
04:21:55  <chrisdickinson>ah, sorry, here's the actual link: i asked a room full of node.js developers, "who here's familiar with streams?", half raised their hands; when i asked "how many of you have used them?" only 3 out like 30 people had used streams
04:21:58  <chrisdickinson>whoop
04:22:02  <chrisdickinson>womp
04:22:03  <chrisdickinson>https://github.com/PDXNode/pdxnode/tree/master/2013-mar/modules
04:22:35  <chrisdickinson>but yeah, that's the anecdote that made me sort of realize that there need to be more sites devoted to modules, authors, and styles
04:30:33  * mikeal1quit (Quit: Leaving.)
04:31:10  * mikealjoined
04:31:35  * mikealquit (Client Quit)
04:35:27  <jesusabdullah>those dudes still taking talks?
04:35:39  <jesusabdullah>dude if you've used the http module YOU HAVE USED STREAMS
04:39:49  <chrisdickinson>jesusabdullah: this is the pdx users group
04:39:55  <chrisdickinson>not the conference
04:40:11  <chrisdickinson>but yeah
04:40:23  <chrisdickinson>the http module would be good to mention, but few had used "pipe"
04:40:35  <substack>ask them: 'who has done ".on('data')"
04:40:45  <substack>haven't used pipe()!
04:40:47  <substack>that is crazy sauce
04:41:10  * Domenic_joined
04:43:31  * mikealjoined
04:44:42  <mbalho>yea
04:44:46  <mbalho>peeps be trippin
04:45:03  <mbalho>'i prefer to be close to the metal so i use .on("data")'
04:45:36  <jesusabdullah>I mean
04:45:49  <jesusabdullah>child.stdout.pipe(process.stdout); // ?
04:45:59  <jesusabdullah>you gotta know what your chile's doing dangit
04:58:49  * st_lukequit (Remote host closed the connection)
05:14:50  * AvianFluquit (Read error: Connection reset by peer)
05:15:19  * AvianFlujoined
05:17:08  * jlordjoined
05:21:17  * Domenic_quit (Ping timeout: 245 seconds)
05:22:20  * thatguydanquit (Quit: thatguydan)
05:30:49  * dguttmanquit (Quit: dguttman)
05:32:51  * AvianFluquit (Remote host closed the connection)
05:34:51  * st_lukejoined
05:41:35  * jlordquit (Quit: leaving)
05:44:35  * defunctzombie_zzchanged nick to defunctzombie
05:46:54  * mmckeggquit (Quit: mmckegg)
05:47:20  * jlordjoined
05:47:28  <jlord>ALL CAPS
05:47:45  <jlord>LOUDBOT: search pizza
05:47:46  <LOUDBOT>jlord: <auntie:#ncsulug> THERE WILL BE RAPE AND ALSO PIZZA
05:47:59  <substack>LOUDBOT: search briggs
05:48:02  <substack>o_O
05:48:12  <jlord>man loudbot
05:48:25  <jlord>you cray
05:48:36  <mbalho>LOUDBOT: search manners
05:48:51  <mbalho>substack: nice one
05:49:33  <mbalho>substack: hey does http://t.co/2lRpCeMmwZ work on your computer
05:50:06  <substack>yep
05:50:10  <mbalho>kewllll
05:50:14  <mbalho>substack: you should make some doods
05:50:32  <substack>very slick
05:51:23  <defunctzombie>mbalho: the grid redraws funny on mine
05:51:50  * thatguydanjoined
05:51:57  <mbalho>defunctzombie: if it flickers slightly then that is expected
05:52:03  <defunctzombie>ah ok
05:52:19  <defunctzombie>is that redraw order?
05:52:26  <mbalho>defunctzombie: its cause Canvas is stupid, only way to fix it is to implement it in webgl
05:52:28  <defunctzombie>and aliasing
05:52:32  <mbalho>defunctzombie: yea basically
05:52:47  <defunctzombie>bitcoins now over 50 USD
05:52:55  <defunctzombie>substack: the btc I sent you is now worth more hahaha
05:55:04  <substack>like 5 usd now
05:55:37  <substack>defunctzombie: worried about http://fincen.gov/statutes_regs/guidance/html/FIN-2013-G001.html ?
05:56:20  <defunctzombie>substack: unclear
05:56:30  <defunctzombie>substack: there is some vague wording in there
05:56:39  <defunctzombie>substack: I am gonna email them (or call) to ask some questions actually
05:57:00  <defunctzombie>substack: the type of business I run is slightly different than the "exchanger" they talk about in there
05:57:14  <defunctzombie>substack: the exchanger as they mention in that document is more like the travelex at the airport
05:57:16  <defunctzombie>or coinbase
05:57:35  <defunctzombie>substack: but overall, we kinda knew some document was bound to show up eventually
05:57:57  <defunctzombie>substack: so worried, not yet, planning ahead, yes
06:34:17  * st_lukequit (Remote host closed the connection)
06:49:10  * tanepiperquit (Ping timeout: 256 seconds)
06:57:41  * tanepiperjoined
06:58:40  * defunctzombiechanged nick to defunctzombie_zz
07:01:04  * marcello3dquit (Remote host closed the connection)
07:29:01  <Raynos>More todofrp crazyness ( http://raynos.graphics-server.jit.su/full/todo.js )
08:11:19  * mmckeggjoined
08:34:04  <rowbit>/!\ ATTENTION: (default-local) paid account successfully upgraded /!\
08:34:04  <rowbit>/!\ ATTENTION: (default-local) [email protected] successfully signed up for developer browserling plan ($20). Cash money! /!\
08:34:15  <substack>yay
08:54:56  * thatguydanquit (Quit: thatguydan)
09:08:20  * sbpquit (Quit: Leaving.)
09:25:06  * Nexxyquit (Remote host closed the connection)
09:28:56  * Nexxyjoined
09:54:42  * tilgoviquit (Remote host closed the connection)
10:14:22  * mmckeggquit (Quit: mmckegg)
10:50:41  <juliangruber>substack: can it be that testling ci has problems with tests that have 0 tests? https://ci.testling.com/juliangruber/periodic
10:53:07  <substack>it counts tests with 0 assertions as failures
10:53:31  <juliangruber>the tape test runner doesn't
10:57:06  <substack>https://github.com/substack/tap-parser/commit/33d10325ec435f0b1c96fb011e1af7e25867f709
10:57:18  <substack>no wait
10:57:40  <substack>this is the one: https://github.com/substack/tap-parser/blob/master/index.js#L94
10:57:59  <juliangruber>so should I just include one t.ok(true)?
10:58:32  <substack>yeah that's the easiest thing
10:58:47  <juliangruber>mkaz
10:58:49  <juliangruber>mkay
11:03:19  <juliangruber>is there a way to trigger a test rerun? when one browser hang up eg
11:03:57  <substack>you can send a test hook from the github hooks page
11:04:05  <substack>but there's not currently a way to rerun a single test
11:04:06  <substack>BUT
11:04:09  <substack>that would be pretty sweet
11:04:14  <substack>consider it noted
11:06:01  <juliangruber>:)
11:07:16  <substack>this week I'm working on some features that an enterprise user with deep pockets needs :D
11:07:26  * thl0joined
11:08:10  <substack>and they should be of moderate utility to everyone else too
11:13:40  * dominictarrjoined
11:21:52  * jibayjoined
11:24:08  <substack>dominictarr: https://groups.google.com/forum/#!topic/sharejs/Uvw86KlOr-g
11:24:32  <substack>basically re-implementing all of rumours with OT for sharejs
11:24:38  <substack>but! some good ideas like using streams
11:24:44  <dominictarr>I saw that!
11:24:54  <dominictarr>that in definately good news
11:25:15  <dominictarr>that there are two options makes the whole idea seem better
11:25:28  <dominictarr>people will only have to pick which one they want to use!
11:25:41  <substack>scuttlebutt vs sharejs?
11:25:52  <substack>does help with framing the problem
11:26:36  <dominictarr>yeah, that is a much better option than scuttlebutt vs. the world
11:27:06  * shuaibjoined
11:27:11  * thatguydanjoined
11:27:28  <substack>it would be useful to know whether OT could be made into something more useful than collaborative text editing with a single centralized server with low latency
11:27:42  <dominictarr>If they use streams, then hopefully it will be cross-compatible
11:27:56  <dominictarr>apparently there are models which support p2p
11:28:26  <dominictarr>substack: it's basically based on an idea rather like git-rebase
11:29:11  <dominictarr>and it works on any list-structured data, arrays, etc.
11:29:31  <dominictarr>and is even simpler with key-value stuff
11:29:42  * ins0mniajoined
11:30:01  <substack>that's good to know
11:30:12  <substack>how does it handle network partitions?
11:30:22  <dominictarr>I'm not really expert of OT, but I think it may require the server to keep a model of the client model.
11:30:57  <dominictarr>From what I understand, it's generally a centralized model.
11:31:13  <dominictarr>But I havn't done deep research into this,
11:31:46  <dominictarr>however - it's more an issue of what the sharejs/racer/derby team's objectives are
11:32:14  <dominictarr>than what is theoretically possible
11:32:39  <dominictarr>they are also planning on refactoring sharejs out into a number of modules -- more good news!
11:36:53  <substack>right
11:37:00  <ins0mnia>https://github.com/operational-transformation/ot.js
11:37:08  <ins0mnia>I was looking into this couple of days ago
11:37:10  <substack>yes when things are split out into sufficiently tiny pieces I tend to find uses for them!
11:37:30  <substack>whereas when people build monoliths those are less useful to me personally because they are all or nothing
11:41:06  <substack>my advocacy of tiny modules is purely out of self-interest!
11:41:47  <substack>but fortunately for everyone that self-interest aligns with everyone else's opportunities for reuse too
11:41:51  <juliangruber>the only real motivation behind everything
11:48:20  <dominictarr>night all!
11:48:28  * dominictarrquit (Quit: dominictarr)
11:52:38  * ins0mniaquit (Ping timeout: 245 seconds)
11:55:12  * thatguydanquit (Quit: thatguydan)
11:57:19  * ralphtheninjajoined
12:03:45  * yorickjoined
12:03:45  * yorickquit (Changing host)
12:03:45  * yorickjoined
12:14:14  * tilgovijoined
12:17:48  * ralphtheninjaquit (Ping timeout: 276 seconds)
12:23:46  * ralphtheninjajoined
12:26:08  <juliangruber>substack: all firefox and chrome tests are failing :O
12:40:21  * tilgoviquit (Remote host closed the connection)
19:22:45  * defunctzombie_zzchanged nick to defunctzombie
19:30:01  <rowbit>/!\ ATTENTION: (default-local) paid account successfully upgraded /!\
19:30:01  <rowbit>/!\ ATTENTION: (default-local) [email protected] successfully signed up for developer browserling plan ($20). Cash money! /!\
19:31:38  * yorickquit (Quit: No Ping reply in 180 seconds.)
19:31:56  * yorickjoined
19:31:56  * yorickquit (Changing host)
19:31:56  * yorickjoined
19:36:23  * st_lukequit (Remote host closed the connection)
19:37:14  * ITprojoined
19:49:11  <CoverSlide>oh i've worked with jquery credit card, it's just to detect valid credit card numbers, and also detects if it's visa, mc, discover, etc
19:52:27  * st_lukejoined
19:54:01  <Domenic_>perfect use case for a jQuery plug-in.
19:56:39  * st_lukequit (Remote host closed the connection)
19:59:03  * Domenic_quit (Remote host closed the connection)
20:02:49  * Domenic_joined
20:03:14  * jibayjoined
20:09:11  <Raynos>o_o;
20:18:50  * st_lukejoined
20:19:25  * dominictarrjoined
20:19:34  <Domenic_>Raynos: any chance you want the @Raynos twitter handle?
20:19:45  * ITproquit (Ping timeout: 252 seconds)
20:19:50  <Raynos>Domenic_: Yes I do
20:20:00  <Raynos>who do I bribe at twitter?
20:20:24  <mbalho>can i have @beef
20:20:38  <Domenic_>If the account is inactive you can usually have it. Lemme check.
20:20:49  <mbalho>i just think it would be awesome to be @beef
20:21:49  * AvianFluquit (Remote host closed the connection)
20:22:04  <substack>maximillian beefcakes
20:22:08  <Raynos>Domenic_: how much does it ruin my identity / branding to change from one to the other?
20:22:36  <Domenic_>Raynos: not much, account gets "renamed." All previous @-mentions stay to @Raynos2 though so there are broken links abounding.
20:22:47  <Raynos>I see
20:22:54  <Domenic_>but all your followers still follow you
20:25:40  <st_luke>mbalho: you should get beef
20:26:52  * ITprojoined
20:27:24  <jez0990_>presumably you could just make a new account to put up a redirect notice and get that mapped to the old handle?
20:27:49  <Raynos>Domenic_: cool
20:27:55  <Raynos>let me know who I should talk too
20:35:33  <jez0990_>did they just DDOS their own site?
20:39:49  * crankquit (Ping timeout: 256 seconds)
20:41:52  * crankjoined
20:45:58  * dominictarrquit (Quit: dominictarr)
20:46:52  <jjjjohnn1y>i accidentally made a direction called -s
20:47:00  <jjjjohnn1y>and now i can't mv -s
20:47:04  <jjjjohnn1y>or rm -s
20:47:13  <jjjjohnn1y>pls help
20:47:25  <jjjjohnn1y>*directory
20:49:44  <jjjjohnn1y>rm: illegal option -- s
20:50:02  <substack>rm -- -s
20:50:44  <jjjjohnn1y>
20:53:25  * AvianFlujoined
20:57:18  <defunctzombie>https://gist.github.com/shtylman/5200051
20:59:20  <defunctzombie>I figured I would start tracking my style over time
20:59:29  <defunctzombie>it will change and will be interesting to see what I add to this
21:00:08  <substack>I switched from key : value to key: value
21:00:24  <defunctzombie>oh yea, I should put that in
21:00:29  <defunctzombie>cause that covers the comma case
21:00:33  <substack>otherwise the js I write is mostly identical to the js I was writing years ago
21:00:45  <substack>at a low-level syntactical level
21:00:56  <defunctzombie>cool
21:01:04  <substack>but the structure is very different
21:01:43  * mikolalysenkoquit (Ping timeout: 264 seconds)
21:01:51  * nicholaszjoined
21:02:52  <defunctzombie>structure is very very different from any js I wrote years ago
21:02:55  <defunctzombie>which was almost 0
21:03:09  <Raynos>IT IS DONE https://twitter.com/Raynos
21:03:13  <Raynos>Domenic_: thank you
21:04:15  <st_luke>how can i get twitter.com/luk
21:04:47  <defunctzombie>substack: https://gist.github.com/shtylman/5200051#file-style-js-L83
21:04:54  <defunctzombie>substack: I think i just coined a new buzzword
21:04:57  <defunctzombie>god closure
21:05:08  <defunctzombie>Raynos: nice!
21:05:12  <defunctzombie>Raynos: what did you have to do?
21:05:37  <Raynos>i dont know what I did, Domenic_ just made it happen
21:05:58  <Raynos>now i need to set up raynos.com for more personal branding
21:07:36  <defunctzombie>wow nice
21:13:17  <jjjjohnn1y>what happend
21:22:01  * chrisdickinsonworks on a style guide too
21:23:51  <Raynos>chrisdickinson: style guides are silly. unless you mean 3d style
21:26:35  <Raynos>defunctzombie: your style guide contains too much class
21:27:04  <defunctzombie>Raynos: hahaha
21:27:13  <Raynos>like half it is
21:27:18  <Raynos>documenting how you write classes :D
21:27:21  <Raynos>as if you do OOP
21:27:26  <defunctzombie>style guides are fun, I like to put into a single document some of the stuff I do
21:27:29  <defunctzombie>to see how it changes
21:27:36  <defunctzombie>hahah
21:28:02  <defunctzombie>Raynos: I use that pattern when I need instances of things
21:28:06  <defunctzombie>not always when I am doing OOP
21:28:29  <defunctzombie>anyhow, it does come up in my code, so I figured I would document it :)
21:29:58  <Raynos>https://github.com/Raynos/pd/blob/master/docs/styleGuide.md
21:30:23  <Raynos>its a year old
21:30:27  <Raynos>i no longer comply with it
21:30:28  <Raynos>at all :D
21:30:38  <defunctzombie>haha
21:31:28  <defunctzombie>I like style guides which are example files
21:31:33  <defunctzombie>maybe that is wrong haha
21:32:03  * mikolalysenkojoined
21:35:57  <juliangruber>substack: ECONNREFUSED
21:36:02  <juliangruber>substack: https://ci.testling.com/juliangruber/encounter.json
21:36:07  <substack>yes
21:36:12  <substack>we're out of disk again probs
21:36:17  <juliangruber>oh noes
21:36:25  <substack>waiting for pkrumins to pop back online
21:36:28  <defunctzombie>hahaha
21:36:40  <chrisdickinson>defunctzombie: https://gist.github.com/chrisdickinson/c82ae21ef6c962f59f3d
21:36:42  <defunctzombie>how did you run out of disk?
21:36:55  <substack>cloning git repos
21:36:55  <chrisdickinson>^^ my style guide, at least for when i'm writing classes
21:37:02  <chrisdickinson>which is something i do less and less of
21:37:34  <defunctzombie>oh man.. I didn't go into my use of constants
21:37:40  <defunctzombie>or 'self' vs 'this'
21:38:02  <defunctzombie>oh yea.. and how I will make a 'proto' var sometimes... I guess I should mention why
21:38:04  <chrisdickinson>yeah, i'm pretty strict about my use of `self` and this
21:38:18  <chrisdickinson>if anything needs `self`, all instances of `this` get turned into `self`.
21:38:32  <defunctzombie>yes
21:38:36  <defunctzombie>I always use self
21:38:37  <chrisdickinson>i hate having to divine whether the two are the same thing or not
21:38:41  <defunctzombie>the only time I won't is with a single this
21:38:53  <defunctzombie>cons.prototype = new ParentClass hm
21:39:01  <chrisdickinson>i only introduce `self = this` if there's another function in this function that will need this
21:39:10  <defunctzombie>I am not sure that is a good way to "extend" properly, people keep going back and forth
21:39:22  <chrisdickinson>i suppose i should note that if available I'll use `Object.create` instead of `new` there
21:39:31  <defunctzombie>I will NEVER have code after a return
21:39:38  <chrisdickinson>haha
21:39:52  <defunctzombie>lots of these are carryovers from my c++ programming I suppose haha
21:40:14  <chrisdickinson>i use it as a warning to readers: "you're not in this event loop anymore! remember that!"
21:40:27  <chrisdickinson>well, "this execution stack"
21:41:20  <defunctzombie>never leading commas cause if I have to remove the first require, then the diff gets all fucked
21:41:34  <chrisdickinson>i've never really had an issue with that
21:41:37  <defunctzombie>I would do trailing commas in object if not for IE
21:41:45  <defunctzombie>I hate IE
21:41:48  <chrisdickinson>though i do like "var for every variable name" style
21:42:01  <defunctzombie>it is a c carry over I think
21:42:03  <chrisdickinson>i try to match surrounding style
21:42:06  <chrisdickinson>(otherwise)
21:42:08  <defunctzombie>cause in c you can really fuck yourself with that
21:42:12  <defunctzombie>chrisdickinson: absolutely
21:42:20  <defunctzombie>the style guide is for personal style
21:42:24  <defunctzombie>I will always match the project style
21:42:28  <defunctzombie>when contributing
21:42:32  * chrisdickinsonnods
21:42:42  <defunctzombie>and will ALWAYS reject pull requests not to style
21:42:47  <chrisdickinson>the thing that always bites me is when folk have a space between `if` and `(`
21:43:01  <defunctzombie>I always use a space iirc
21:43:10  <defunctzombie>if is a not a functon
21:43:14  <defunctzombie>*function
21:43:28  <defunctzombie>:p
21:43:50  <defunctzombie>https://gist.github.com/chrisdickinson/c82ae21ef6c962f59f3d#file-class-style-js-L115
21:43:51  <defunctzombie>amen!
21:43:55  <defunctzombie>I should add that haha
21:44:46  * st_lukequit (Remote host closed the connection)
21:45:35  * st_lukejoined
21:45:38  <chrisdickinson>yeah, that's something i do in every language, but especially helps in JS
21:45:44  <chrisdickinson>because you really, really, really want to avoid nesting
21:46:09  <chrisdickinson>oh, something i didn't mention: i very rarely use "options" arguments
21:46:22  <chrisdickinson>i see them as a code smell, usually
21:48:27  <chrisdickinson>defunctzombie: https://gist.github.com/chrisdickinson/c82ae21ef6c962f59f3d#file-class-style-js-L169
21:49:01  <defunctzombie>also a very good point
21:50:01  <chrisdickinson>i've got some pretty silly habits in some cases
21:50:13  <chrisdickinson>especially the "var statements ordered by line length descending"
21:50:41  <chrisdickinson>also "snake_case"
21:51:00  <chrisdickinson>but i kind of like snake case as it forces me to be laconic in my public api names -- one word verbs
21:52:14  <defunctzombie>var statements haha
21:52:20  <defunctzombie>the snake case thing I wish I could use more
21:52:28  <defunctzombie>I like snake case because I can read it much easier
21:52:31  <Domenic_>snake case O___o
21:52:33  <defunctzombie>but no one is js land uses it
21:52:45  <defunctzombie>snake case is much better for reading imho
21:52:56  <defunctzombie>imagineifwedidn'tusespacesbetweenourwords
21:53:03  <defunctzombie>thatwouldbeterrribleandreallyhardtoread
21:53:34  <Domenic_>substack: brfs doesn't seem nice to me. How do you answer that I much prefer `require('./template.jade')` versus `require('fs').readFileSync(require('path').resolve(__dirname, './template.jade'))`
21:53:56  <defunctzombie>Domenic_: no is how you answer it
21:54:01  <defunctzombie>Domenic_: require is for js or json
21:54:08  <Domenic_>lol why json
21:54:09  <defunctzombie>Domenic_: not a file loader :) haha
21:54:14  <defunctzombie>Domenic_: cause we love json haha
21:54:36  <Domenic_>the maddening thing is that it defeats any attempts at wrapping it
21:54:45  <defunctzombie>Domenic_: cause json is javascript (no I don't want to hear about that random character case)
21:54:46  <substack>Domenic_: require() is for code and json and it breaks consistency with node to use it for other things
21:55:00  <substack>and it creates confusing mental model for what the scope of require() is
21:55:04  <Domenic_>you can't write `function requireJade(x) { require('fs').readFileSync(require('path').resolve(__dirname, x)); }` because that's not brfs-compatible.
21:55:20  <Domenic_>json is definitely in the same category as templates
21:55:29  <Domenic_>especially if those templates manifest as javascript functions
21:55:30  <defunctzombie>wut
21:55:37  <Domenic_>just like json manifests as javascript objects
21:55:46  <Domenic_>you take static text and you turn it into JavaScript
21:55:51  <defunctzombie>if those templates manifest as js then tehey are js
21:55:52  <substack>Domenic_: it is in a distinct category in that require() doesn't work on templates in node
21:56:08  <substack>browserify puts how node works in the browser
21:56:08  <Domenic_>substack: that is a legit argument, unlike "we like json"
21:56:16  <Domenic_>substack: but node has require.extensions.
21:56:18  <substack>brfs has a similar aim
21:56:25  <substack>Domenic_: which should be discouraged
21:56:34  <juliangruber>chrisdickinson: the repo field of git-packfile's package.json is wrong
21:56:38  <Domenic_>substack: but it's so convenient, *especially* client-side.
21:56:45  <chrisdickinson>juliangruber: whoa, thanks!
21:56:59  <substack>Domenic_: just use a different function like how brfs provides fs.readFileSync()
21:57:09  <Domenic_>hmm yeah write my own transform
21:57:13  <substack>yes
21:57:17  <Domenic_>ok that's acceptable
21:57:29  <defunctzombie>Domenic_: we like json
21:57:39  <Domenic_>actually my transform will just intercept `require('{anything}.jade')` and transform that ^_^
21:57:42  <defunctzombie>that is really why it is there
21:57:48  <defunctzombie>not for any other reason :)
21:57:55  <substack>I personally dislike that but browserify isn't going to stop you
21:57:56  * mikolalysenkoquit (Ping timeout: 255 seconds)
21:58:08  <Domenic_>maybe my transform will implement require.extensions fully
21:58:13  <Domenic_>muwahahaha
21:58:24  <defunctzombie>Domenic_: or you could just have a "templates.js" file which you load up separately which has the damn templates
21:58:34  <defunctzombie>and save yourself a bunch of overengineering :)
21:58:45  <Domenic_>defunctzombie: that's lame. i want my templates as peers of my view js files, and one template per file.
21:59:08  <Domenic_>remember: if we aren't more convenient than AMD, we lose.
21:59:15  <defunctzombie>I tried hyperscript recently, that was alright
21:59:19  <defunctzombie>Domenic_: we are more convenient
21:59:26  <substack>jade.compile(fs.readFileSync()) looks pretty fine for me
21:59:27  <defunctzombie>do you know how I know.. cause I never used AMD
21:59:31  <Domenic_>defunctzombie: this is definitely not true for many use cases
21:59:38  <substack>but you could shorten that in a custom transform
21:59:38  * jibayquit (Quit: Leaving)
21:59:39  <defunctzombie>I took one look and went.. the person that made this was retarded
21:59:46  <defunctzombie>:D
21:59:46  <substack>I just recommend against using require()
21:59:48  <Domenic_>substack: it's the path-munging and the require-ing of fs and path that makes it long
22:00:09  <Raynos>defunctzombie, chrisdickinson: I dont tend to differentiate require's by userland / core
22:00:25  * dominictarrjoined
22:00:40  <chrisdickinson>Raynos: i do it mostly because i write the code first then do the `npm install --save` after
22:01:08  <Raynos>I do this though https://github.com/Raynos/graphics/blob/master/examples/full/mario.js#L14
22:01:08  <chrisdickinson>juliangruber: fixed
22:01:18  <defunctzombie>Raynos: again mostly a habit from c/c++ days
22:01:23  <Raynos>grouping importing function symbols by thing
22:01:23  <juliangruber>chrisdickinson: :)
22:01:25  <defunctzombie>so I can know where shit will be documented
22:01:38  <Raynos>definitely local modules last though :D
22:02:03  <defunctzombie>ideally, there would be no core modules hahaha
22:02:03  <chrisdickinson>yeah, they're usually hanging out, just waiting around to be turned into real packages and moved into the "userland modules" section :|
22:02:13  <defunctzombie>only core interfaces that other modules build on
22:02:21  <Raynos>Not true
22:02:30  <defunctzombie>haha
22:02:31  <Raynos>i require real local modules, like other widgets & templates
22:02:33  * mmckeggjoined
22:02:37  <Raynos>or models / controllers / view
22:02:41  <Raynos>but I do do
22:03:28  <Raynos>https://gist.github.com/Raynos/5ccdd7fe998101d0a8d9
22:03:29  <Raynos>^
22:03:53  <defunctzombie>Domenic_: you coming to node meetup wednesday?
22:03:56  <Raynos>if you have ../../.. in your require you have to postfix your local import variable with ಠ_ಠ
22:04:10  <Domenic_>defunctzombie: ya
22:04:10  <defunctzombie>hahah
22:04:12  <defunctzombie>Domenic_: coo
22:04:28  <Raynos>I have a serious lib problem
22:04:35  <Raynos>I know I've written some code to solve a problem
22:04:44  <Raynos>but I dont know in which lib folder it is in which one of my 20 git repos
22:04:54  <Raynos>and even then is it in lib or browser/lib or browser/widget-thing/lib
22:05:22  <Raynos>I need a tool that searches all `*/lib/*.js` for strings so I can find code :D
22:05:54  <st_luke>grep
22:07:10  <substack>grep TERM */lib/*.js does exactly that
22:08:23  * sbpjoined
22:09:08  <Raynos> wut ಠ_ಠ
22:09:11  <Raynos>unix works?
22:09:36  <Raynos>I thought I had to install coffeescript CLI modules of npm to do these types of things
22:10:39  * thatguydanjoined
22:11:14  <Raynos>https://gist.github.com/Raynos/386bbb5d8e5864023a58 that isn't recursive
22:11:18  <Raynos>it only does local things
22:11:56  <Raynos>https://gist.github.com/Raynos/7f013efbd621e331efe2
22:11:59  <Raynos>Ok i figured it out :D
22:12:02  <Raynos>#win
22:12:20  <defunctzombie>Raynos: grep -r
22:13:12  <Raynos>-r doesnt work for me
22:13:59  <Raynos>oh because I pass in */lib/*.js which is a file expansion
22:14:45  <Raynos>what's the recursive equivelant of */lib/*.js ?
22:15:44  <Raynos>Ok, so what part of my youth did I skip where everyone else learned unix?
22:16:42  <pkrumins>juliangruber, problem fixed now with testling
22:16:56  <juliangruber>pkrumins: great!
22:17:22  <juliangruber>still 500ing
22:17:33  <pkrumins>oops right
22:17:36  <pkrumins>couch needs a restart
22:18:15  <pkrumins>ok now fixed
22:19:03  * mikolalysenkojoined
22:20:42  <Raynos>dominictarr: programming UIs with vot or tsov is vastly different. I don't think there is much overlap in terms of primitives. i.e. the reducers/reducible & observable/graphics primitives are quite different.
22:20:56  <Raynos>I'm not sure whether it makes sense to program UIs with both
22:22:40  <dominictarr>Raynos: actually the thing that decided me to experiment with strm was building an arbitary tree traversal library
22:22:58  <Raynos>dominictarr: https://github.com/gozala/tree-reduce
22:23:00  <dominictarr>with an api that could be used to traverse all different types of trees,
22:23:09  <Raynos>i havnt looked into tree-reduce much yet
22:23:19  <st_luke>what are you code-politically if you are in favor of breaking changes but not in favor of new features
22:23:33  <Raynos>st_luke: trolling?
22:23:42  <st_luke>fuck
22:24:52  <dominictarr>like objects, file system, html-elements, AST, dependency trees, etc
22:24:58  <dominictarr>will checkout tree reduce
22:25:26  <dominictarr>raynos: my first experiments https://github.com/dominictarr/poset
22:26:30  <Raynos>dominictarr: https://github.com/Raynos/ngen/blob/colingo/templates/colingo/content/README.md#example you should put example in your readme generator as a reminder to write them
22:26:59  <Raynos>the example doesn't need to be executable or valid :P it just needs to give some kind of idea of how things may work
22:27:43  <dominictarr>there is some code there,
22:27:48  <dominictarr>but it's not in ```
22:29:11  <defunctzombie>st_luke: libertarian?
22:29:12  <Raynos>do I burn in hell if I use this module? ( https://github.com/hughfdjackson/lmbd )
22:29:31  <defunctzombie>st_luke: whichever thing is that meaning you want less features basically
22:29:37  <defunctzombie>st_luke: also... trolling
22:29:42  <Raynos>dominictarr: i also dont understand how poset & tree are related
22:29:51  <defunctzombie>Raynos: yes
22:30:06  <Raynos>is it that a tree is a poset, i.e. a set of nodes and the nodes have a partial order relationship by tree order?
22:30:06  <defunctzombie>Raynos: there is a special place in hell for non keyboard characters in code
22:30:27  <dominictarr>Raynos: poset is an abstraction that fits over sets, lists, and trees
22:30:41  <Raynos>defunctzombie: I actually thinking being forced to copy λ will slow down my usage of incredible terse single expression functions
22:30:41  <dominictarr>jez0990_ told me about it
22:30:50  <jez0990_>o/
22:31:09  <dominictarr>jez0990_: tell raynos about posets
22:31:14  <defunctzombie>Raynos: is that good or bad? also, I just type func and hit tab
22:31:15  <jez0990_>it's an abstraction for handling everything short of a graph
22:31:20  <defunctzombie>Raynos: or type out function
22:31:23  <defunctzombie>Raynos: it isn't that hard
22:31:31  <Raynos>defunctzombie: function () { return blargh } busts my 80 line character limits
22:31:42  <defunctzombie>Raynos: developers who are bound by their typing speed are doing it wrong
22:31:47  <dominictarr>Raynos: might as well just have a compile to js lang
22:31:51  <defunctzombie>Raynos: you have a condition
22:31:56  <jez0990_>very useful for manipulating interrelated trees, which can be found just about everywhere
22:32:09  <Raynos>defunctzombie: not typing speed. it's width
22:32:15  <defunctzombie>that's what she said
22:32:36  <dominictarr>Raynos https://gist.github.com/dominictarr/c93084ce119fa5ea95a9
22:32:53  <Raynos>https://gist.github.com/Raynos/c8d64ae2be96abf0bd21
22:33:23  <dominictarr>Raynos: will encourage you to put more on a line
22:33:38  <Raynos>Wait a sec
22:33:41  <dominictarr>too magic
22:33:50  <defunctzombie>way too magic
22:34:06  <defunctzombie>also.. jesus christ dominictarr if I see code like that in a project
22:34:12  <defunctzombie>I think I will burn it to the ground hahaha
22:34:23  <defunctzombie>how would I ever type that shit
22:34:37  <dominictarr>defunctzombie: I wrote that gist because people where arguing that it should be added to js
22:34:50  <defunctzombie>wait.. wut
22:34:55  <dominictarr>I was like, if it's such a good idea, just fucking do it
22:35:03  <defunctzombie>seriously?
22:35:09  <defunctzombie>there were people arguing for this ?
22:35:15  <dominictarr>yes
22:35:16  <defunctzombie>have they tried programming with it?
22:35:16  <Raynos>https://gist.github.com/Raynos/c8d64ae2be96abf0bd21 <-
22:35:19  <dominictarr>on the mailing lis
22:35:21  <dominictarr>t
22:35:29  <dominictarr>yeah, so I wrote that as a troll
22:35:30  <defunctzombie>man... I gotta stop talking to developers
22:35:37  <defunctzombie>thank god I don't read those lists
22:35:55  <Raynos>I can either write long functions, use higher order functions like prop("online") or use lambda
22:36:02  <Raynos>i default to long functions but im tempted by lambda
22:36:10  <chrisdickinson>Function('x', 'return x')?
22:36:17  <defunctzombie>hahaha
22:37:06  <dominictarr>Raynos: it's highly dubious, and would probably be difficult for the compiler to optomize
22:37:15  * CryptoQuickquit (Ping timeout: 256 seconds)
22:37:31  <chrisdickinson>it'd be neat to have a lib that took a function and returned a function that would return a new function until it was given enough arguments (or scope?) to become decidable
22:37:31  <Raynos>true :(
22:37:35  <Raynos>ill just wait for es6
22:37:57  * CryptoQuickjoined
22:38:17  <dominictarr>I'm open to the possibility of a compile to js lang that tersifys js, but goes both ways
22:38:25  <dominictarr>so you can take a PR in js
22:38:26  <chrisdickinson>maybe = require('maybe'); fn = maybe(function(x, y) { return x + y + z }); fn.scope({z: 10}); fn(2)(3) === 10
22:38:33  <defunctzombie>I am open to a compile to js lang that is lua
22:38:35  <dominictarr>and convert it back to terse-script
22:38:38  <defunctzombie>with some syntax fixes
22:38:48  <chrisdickinson>i just want zencoding for js asts :|
22:38:51  <defunctzombie>then I never have to interact with js webdevs again
22:38:58  <defunctzombie>:D
22:39:09  <dominictarr>defunctzombie: go live on monad mountain with raynos
22:39:15  <defunctzombie>hahaha
22:39:18  <Raynos>WUT >:(
22:39:18  <defunctzombie>monad mountain
22:39:22  <defunctzombie>that has a nice ring to it
22:39:25  <chrisdickinson>"fn(a, b) > return (+ a b)", leader + comma, "function(a, b) { return a + b }"
22:40:20  <Raynos>this one is better https://github.com/dfellis/lambda-js less magic
22:40:22  <st_luke>substack: https://github.com/substack/pushover/blob/master/lib/onexit.js would be a cool tiny module
22:41:28  <defunctzombie>what does that do?
22:41:29  <chrisdickinson>Raynos: haha, that just does the `Function('x', 'return x')` thing under the hood :|
22:41:40  <Raynos>and caches it!
22:41:45  <chrisdickinson>ah yeah, with a cache
22:41:47  <Raynos>:P
22:41:56  <Raynos>but thats the minimal amount of magic you want
22:42:00  * thatguydanquit (Quit: thatguydan)
22:42:13  <Raynos>maybe i should just write coffeescript ಠ_ಠ
22:42:30  <st_luke>defunctzombie: it's nice for cli apps that do forking
22:42:37  <dominictarr>Raynos: I guess it don't support closures?
22:42:41  <chrisdickinson>Raynos: or you could go the entire other direction and add a method to string.prototype
22:42:51  <chrisdickinson>dominictarr: nope, Function() constructors only get the global object
22:42:57  <chrisdickinson>(like indirect eval)
22:42:59  <Raynos>chrisdickinson: overwrite `String.prototype.valueOf` >_>
22:43:03  <chrisdickinson>haha
22:43:10  <Raynos>map("x")
22:43:10  <dominictarr>Raynos: the annoying thing is that it adds this indirection to your code, because to read it, I have to go and read that module
22:43:15  <Raynos>it will do the correct thing :D
22:43:15  <chrisdickinson>"x + y".ƒ()
22:43:31  * thl0quit (Remote host closed the connection)
22:43:37  <Raynos>dominictarr: agreed. hence it's only good for a flow control / utils / sugar / abstraction thing in application and not in libraries
22:43:42  <dominictarr>so that I can map lab("x") to function (x) { return x }
22:43:43  <defunctzombie>http://www.gifsforum.com/images/image/other/grand/well-I-guess-thats-that-other-eccbc87e4b5ce2fe28308fd9f2a7baf3-1414.jpg
22:43:54  <Raynos>where there's a trade off at the application team level to use certain sugar / abstractions for increased things
22:44:01  <dominictarr>Raynos: nearly everything is a library
22:44:13  <Raynos>dominictarr: except apps
22:44:24  <dominictarr>thats just a little bit of glue
22:44:30  <Raynos>its a shit ton of state
22:44:33  <Raynos>about the app
22:44:37  <Raynos>and its a shit ton of custom UI interaction
22:44:38  <st_luke>defunctzombie: that url is a lie
22:45:12  <dominictarr>Raynos: also, it can't do closure vars
22:45:26  <Raynos>dominictarr: that's ok. I really want it for terse single expressions
22:45:32  <st_luke>read that as closure wars
22:46:13  <defunctzombie>closure wars!!
22:46:15  <defunctzombie>oh man
22:46:21  <defunctzombie>that would be a great programming game name
22:46:46  <dominictarr>the goal is to enclose your opponent's variables in your closures
22:47:07  <Raynos>dominictarr: https://gist.github.com/Raynos/272143fc07d6fd80aa5a I write things like this too much
22:47:17  <Raynos>maybe my problem is too much transformation of data types
22:47:25  <mikolalysenko>dominictarr, Raynos: Scrolling through backlog, you do know that posets and forests are the same thing right?
22:47:27  * AvianFluquit (Remote host closed the connection)
22:48:05  <defunctzombie>dominictarr: hahaha
22:48:33  <dominictarr>Raynos: right… well, suit your self
22:48:46  <defunctzombie>Raynos: that code needs some formatting love
22:48:48  <dominictarr>just don't accuse me that my code is hard to read
22:48:50  <Raynos>dominictarr: I'm not going to do it. It would make my code a disaster
22:49:00  <Raynos>but im tempted ;_;
22:49:31  * thl0joined
22:49:43  <Raynos>I still think String.prototype.valueOf = function () { return new Function("x", "return " + this) } is the best idea ever
22:50:56  * thl0quit (Remote host closed the connection)
22:51:48  <chrisdickinson>wouldn't work though ):
22:51:59  <chrisdickinson>valueOf has to return a primitive or else the result is discarded
22:53:52  <mikolalysenko>dominictarr: also if you are going to implement posets, it would be awesome if you went totally crazy and built a link/cut tree data structure: http://en.wikipedia.org/wiki/Link/cut_tree
22:54:12  <Raynos>oh god that code breaks jsfiddle :P
22:54:29  <Raynos>chrisdickinson: sucks
22:58:26  <juliangruber>rvagg hij1nx: awesome mentions in nodeup, gives me warm fuzzies
22:58:40  <dominictarr>mikolalysenko: can you describe me a use-case for that?
23:00:20  <mikolalysenko>network flow, you need it to maintain paths in Orlin's algorithm
23:00:27  <mikolalysenko>also dynamic connected components in large graphs
23:00:53  <mikolalysenko>http://en.wikipedia.org/wiki/Maximum_flow_problem
23:00:54  <jez0990_>mikolalysenko: this is interesting
23:01:02  <mikolalysenko>http://en.wikipedia.org/wiki/Relabel-to-front_algorithm
23:01:11  <jez0990_>in all my poset research I hadn't come across this
23:01:12  <mikolalysenko>probably has other good uses too
23:01:37  <mikolalysenko>jez0990_: did you try searching for "
23:01:40  <mikolalysenko>forests"
23:01:46  <mikolalysenko>that is the more common name in data structures
23:02:14  <mikolalysenko>there are other easier to implement algorithms too, like Euler tour trees: http://en.wikipedia.org/wiki/Euler_tour_technique
23:02:18  <mikolalysenko>but they are not as flexible
23:02:34  <dominictarr>mikolalysenko: I'd like to be close to the right abstraction so stuff like this is possible
23:02:47  <mikolalysenko>link cut trees are the most flexible and still pretty fast
23:02:51  <mikolalysenko>but they are complicated to implement
23:03:08  <mikolalysenko>euler tour trees are a little less general, but are really easy to code
23:03:15  <gozala>dominictarr: tree-reduce can traverse anything
23:03:28  <gozala>as long as you can see it as a logical tree
23:03:35  <mikolalysenko>but what if you want to combine trees together?
23:03:36  <gozala>Raynos: ^
23:03:54  <dominictarr>gozala: yeah, it looks good - but needs more controled ordering
23:04:18  <gozala>what do you mean ?
23:04:30  <gozala>if you want ordering it's separate concern IMO
23:04:35  <dominictarr>gozala: so, I may want to do a depthFirst search
23:04:44  <dominictarr>or a width first search
23:04:56  <gozala>dominictarr: I had sequential(reducer) function
23:04:58  <dominictarr>or maybe I want leaves first (topological sort)
23:05:11  <dominictarr>what does that do
23:05:11  <gozala>before that was sequentialising any reducible
23:05:38  <rvagg>juliangruber: ✔
23:05:44  <gozala>making it order based rather than time based basically
23:05:58  <dominictarr>mikolalysenko: euler tour looks simple, it's a depth first search, where you come back up the edges also
23:06:01  <Domenic_>Raynos: ES6 template strings can make your idea a reality. f`x*x` or similar.
23:06:10  <Raynos>https://gist.github.com/Raynos/52fa6ca745a26da2a1cc
23:06:14  <Raynos>:(
23:06:16  <Raynos>^
23:06:26  <mikolalysenko>dominictarr: yep. you can actually store the nodes as a binary search tree/ordered list
23:06:33  <Raynos>I think `../../lib` is the sign that you basically fucked up and now are writing a large app
23:06:41  <gozala>dominictarr: what I'm trying to say is if you want to imply order for tree-reduce
23:07:03  <mikolalysenko>link cut trees are more powerful though since you can compute path aggregates efficiently
23:07:08  <dominictarr>mikolalysenko: provided that you know the edges are the entire tree, correct?
23:07:18  <gozala>your third arg function should wrap result into something like sequential(children)
23:07:19  <mikolalysenko>that is the definition of a tree
23:07:32  <mikolalysenko>but you can handle back edges outside the tree too
23:07:50  <mikolalysenko>it just requires some more hacking around
23:08:03  <mikolalysenko>actually, maybe I am confused now...
23:08:10  <Raynos>Domenic_: but ES6 has => syntax :P so no point
23:08:24  <Domenic_>Raynos: yeah but even shorter, kinda neat.
23:08:25  <gozala>Raynos: => is awesmoe
23:08:30  <gozala>awesome*
23:08:31  <mikolalysenko>right! I am stupid. posets can have cycles, trees can not
23:08:43  <mikolalysenko>*smacks head*
23:08:45  <dominictarr>mikolalysenko: jez0990_ so, I guess we need the ability to have values attached to the edges
23:08:52  <Domenic_>x=>x*x vs. f`x*x` hmm same number of cahracters i am wrong
23:08:58  <mikolalysenko>sorry, I just gout out of a long lecture and spent the first four hours of this day driving
23:09:41  <mikolalysenko>anyway, what I am trying to say is that I want some one to implement a link/cut tree data structure and maintain it so I don't have to
23:09:45  <dominictarr>jez0990_: is that right - can posets have cycles, I thought just references?
23:09:57  <dominictarr>hmm, I guess you could have A < B < C < A
23:10:05  <st_luke>I just found the weirdest bug in iterm on os x
23:10:16  <jez0990_>no, cycles aren't allowed
23:10:19  <st_luke>if you echo an escape code a certain way it will open the print dialogue on os x
23:10:23  <jez0990_>it breaks transitivity
23:10:27  <mikolalysenko>hmm
23:10:34  <mikolalysenko>but you can have:
23:10:37  <mikolalysenko>a < b < c
23:10:41  <mikolalysenko>and a < d < c
23:10:48  <mikolalysenko>but not b < d | d < b
23:10:58  <mikolalysenko>which is what I mean
23:11:02  <gozala>dominictarr: but you right tree-reduce embraces commutative consumption
23:11:54  <jez0990_>mikolalysenko: DAG
23:11:55  * Domenic_quit (Remote host closed the connection)
23:12:03  <jez0990_>I think?
23:12:12  <mikolalysenko>yeah, DAG is the correct term
23:12:18  <mikolalysenko>but DAG is more general than poset
23:12:24  <mikolalysenko>since poset can't have back edges
23:12:36  <Raynos>Are we in ##posets ?
23:12:54  <mikolalysenko>sorry about this, I didn't mean to create confusion
23:12:59  <Raynos>its cool :D
23:13:06  * fentjoined
23:13:08  <mikolalysenko>I am half drunk with tiredness, which is my excuse
23:13:11  <Raynos>It's just nice to see we are actually talking about effectively undergrad maths stuff
23:13:20  <dominictarr>mikolalysenko: what is a back-edge?
23:14:02  <mikolalysenko>do a dfs from any node, a back edge is an edge to a previously visited node with higher depth
23:14:04  <dominictarr>Raynos: I never heard of posets till about a month ago
23:14:17  <Raynos>I learned about them in maths
23:14:29  <Raynos>posets, groups & categories
23:14:41  <Raynos>also monads in there somewhere :D
23:14:48  <dominictarr>mikolalysenko: right, like when two different modules require underscore
23:15:14  <mikolalysenko>not quite the same
23:15:19  <dominictarr>Raynos: never did much math an uni
23:15:27  <mikolalysenko>a back edge would be if a requires b and b requires a
23:15:39  <Raynos>I did an entire course on category theory and I still dont understand monads
23:15:59  <dominictarr>hmm, that seems like a cycle to be
23:16:03  <dominictarr>var a = []
23:16:03  <mikolalysenko>wiki picture: http://en.wikipedia.org/wiki/File:Tree_edges.svg
23:16:05  <dominictarr>a.push(a)
23:16:08  <mikolalysenko>yes: backedges are cycles
23:16:12  <mikolalysenko>but there are two types of cycles
23:16:24  <dominictarr>what is the other type?
23:16:25  <mikolalysenko>one is a "diamond" cycle in a digraph
23:16:30  <mikolalysenko>the other is a true cycle
23:16:43  <mikolalysenko>those diamond cycles are called forward/cross edges
23:16:55  <mikolalysenko>while the others are called back edges
23:17:37  <dominictarr>var b = {}, c = [], a = []; c.push(b); a.push( c); a.push(b)
23:17:40  <dominictarr>like that?
23:17:40  <jez0990_>mikolalysenko: I hadn't really searched for the term 'forests' before but it seems forest/poset terminology differs on a very subjective basis - posets have a huge mathematical heritage which hasn't fully translated into CS as of yet
23:17:50  <dominictarr>is that the diamond?
23:17:56  <dominictarr>a
23:18:11  <mikolalysenko>jez0990_: you are right, I made a stupid mistake. scroll up to see
23:18:15  <dominictarr>a->b; a->c; b->d; c-d
23:18:25  <dominictarr>sorry
23:18:27  <dominictarr>c->d
23:18:30  <mikolalysenko>dominictarr: yes
23:18:46  <mikolalysenko>that is a "diamond" cycle or forward edge
23:18:54  <dominictarr>right, a forward edge
23:19:12  <dominictarr>I just call that a "reference"
23:19:17  <mikolalysenko>the distinction only makes sense in directed graphs though
23:19:17  <dominictarr>(based on js use)
23:19:22  <dominictarr>yes
23:19:40  <dominictarr>because you can only traverse a back-edge
23:20:05  <mikolalysenko>not sure what you mean... a back edge would be a true cycle
23:20:06  <dominictarr>a forward edge is like two one way values that connect to the same place
23:20:26  <mikolalysenko>(where "true" is sort of a metaphorical term here)
23:20:30  <dominictarr>mikolalysenko: if you are traversing the graph, you can only "go around" a back edge
23:20:44  <dominictarr>you can't get back to your starting point on a forward-edge
23:20:52  <mikolalysenko>yeah
23:21:04  <dominictarr>(if you are restricted to following the edge direction)
23:21:10  <mikolalysenko>this wiki picture explains it pretty well I think: http://en.wikipedia.org/wiki/File:Tree_edges.svg
23:21:22  <mikolalysenko>basically this is all part of dfs ordering for directed graphs
23:22:05  <mikolalysenko>it sort of matters when you are building minimum spanning trees
23:25:21  <jez0990_>Raynos: I'm convinced monads are like QM, nobody understands it
23:25:44  <Raynos>jez0990_: What's QM
23:25:56  <jez0990_>Raynos: sorry, quantum mechanics
23:25:56  <Raynos>also why u _
23:26:12  <mikolalysenko>monad = monoidal functor on the category of types: http://en.wikipedia.org/wiki/Monoidal_functor
23:26:15  <jez0990_>i'm a lazy irc n00b :D
23:26:33  <mikolalysenko>don't think that helps much though...
23:27:58  <dominictarr>jez0990_: schrodinger's cat is a monad
23:28:06  <mikolalysenko>your mom's a monad
23:28:18  <mikolalysenko>:P
23:28:33  <Raynos>miko: http://farm7.staticflickr.com/6192/6084665038_b6b93bd1e3_z.jpg
23:29:16  <mikolalysenko>but in all seriousness, I don't really see what monads have to do with anything here; or maybe I missed that connection
23:29:43  <jez0990_>mikolalysenko: Raynos studied them along side posets at uni - nothing profound!
23:32:08  <mikolalysenko>maybe I am just stupid and narrowminded, but I tend to prefer to think in terms of graphs, arrays and matrices
23:33:35  <dominictarr>mikolalysenko: the distinction between a cross-edge and a tree edge does not seem well defined
23:33:54  <mikolalysenko>yeah, I don't really know what wikipedia is talking about there either
23:34:01  <dominictarr>it depends on how you are traversing the tree
23:34:12  <mikolalysenko>I think in my data structures book (remembering way back) it only discussed forward and back edges
23:34:26  <mikolalysenko>and back edge = edge to vertex visited on dfs traversal
23:34:49  <mikolalysenko>but in either case, the distinction depends on how you traverse the nodes and which node you start at
23:35:51  <mikolalysenko>I guess my point for brining it up is that it illustrates the main difference between a poset and a general directed graph
23:36:00  <mikolalysenko>in a poset, you never have back edges
23:36:10  <mikolalysenko>while in a directed graph, it may happen that you get a cycle
23:36:44  <mikolalysenko>so a poset is really just a directed acyclic graph
23:37:02  <mikolalysenko>where each edge has multiplicity 1
23:37:12  <mikolalysenko>and every node has an edge v -> v
23:37:27  <mikolalysenko>( I think )
23:37:38  <dominictarr>mikolalysenko: it doesn't need to be connected
23:37:52  <mikolalysenko>directed acyclic graph does not need to be connected either
23:37:54  <dominictarr>so it's a forrest of one of more DAGS
23:38:02  <dominictarr>oh, cool
23:38:10  <dominictarr>okay, that is the same thing
23:38:11  <mikolalysenko>no, it is a graph not a tree
23:38:24  <mikolalysenko>well, modulo the multiplicity and reflexive conditions
23:38:26  * thl0joined
23:38:33  <mikolalysenko>so in a poset you have the relation a R a for all a
23:38:42  <jez0990_>mikolalysenko: I think graphs, arrays and matrices are great for describing generic computer systems but I am personally interested in modelling human knowledge which I believe is ultimately hierarchical, and in search of ways to fit it all into a database I was convinced of the power of posets initially by this paper: www.csd.uwo.ca/tech-reports/488/pod.ps
23:39:34  <mikolalysenko>yes, but posets are a kind of graph
23:39:43  <dominictarr>agree
23:39:46  <mikolalysenko>assuming I didn't make any other mistakes in the above
23:39:53  <mikolalysenko>though there are things that are not graphs, for sure
23:39:56  <mikolalysenko>like simplicial sets
23:40:03  <mikolalysenko>but they are really just higher dimensional graphs
23:40:24  <dominictarr>but, defined with operators that put the focus strongly on somethings
23:40:27  <jez0990_>it is difficult to optimise graphs, but not posets
23:40:33  <dominictarr>like if you say a < b
23:40:45  <dominictarr>you are saying that a is a ancestor of b
23:40:54  <dominictarr>which is harder to say with a graph
23:40:59  <dominictarr>but simple with a poset
23:41:07  <mikolalysenko>you just say: does there exist a path from b to a ?
23:42:16  * thl0quit (Remote host closed the connection)
23:42:17  * mikealjoined
23:42:40  <mikolalysenko>or you could also say: are a and b path connected?
23:42:48  <dominictarr>yes
23:43:08  <dominictarr>but it's more abstract with graphs
23:43:15  <mikolalysenko>though that one is more like a < b | b < a
23:43:23  <dominictarr>than what do you prefer? apples or oranges?
23:43:27  <jez0990_>that's an important point
23:43:32  <jez0990_>graphs are more abstract
23:43:40  <mikolalysenko>I guess it depends on your mindset
23:43:41  <jez0990_>which means the algebra is more vague
23:43:49  <dominictarr>yeah, that is the appeal of posets
23:43:54  <mikolalysenko>like I said, I prefer graphs but I freely admit it is not the only way to think about things
23:44:00  <jez0990_>poset algebra, for manipulating posets seems very powerful
23:44:01  <dominictarr>it can't do every graph
23:44:17  <dominictarr>but it can do alot more than arrays/lists/sets
23:44:26  <mikolalysenko>that's true
23:44:27  <dominictarr>and there is an astonishing number of things we use that fits into posets
23:44:37  <mikolalysenko>that's true
23:44:45  <mikolalysenko>but some things that don't, like meshes for example
23:44:50  <dominictarr>yes
23:44:55  * st_lukequit (Remote host closed the connection)
23:44:59  <mikolalysenko>for those you can't even model them with graphs
23:45:01  <dominictarr>but a good poset api seems like the next step
23:45:10  <dominictarr>wow, really?
23:45:13  <mikolalysenko>yep
23:45:17  <mikolalysenko>they are simplicial sets
23:45:18  <mikolalysenko>http://en.wikipedia.org/wiki/Simplicial_complex
23:45:43  <mikolalysenko>basically higher dimensional graphs
23:45:57  <dominictarr>when i visualize a mesh, I can see a graph of chicken wire
23:46:03  <mikolalysenko>where instead of just having vertices and edges, you can also have facets (triangles) or volumes (tetrahedra)
23:46:07  <mikolalysenko>that is called the skeleton of the mesh
23:46:13  <mikolalysenko>you also have to fill in the cells somehow
23:46:24  <mikolalysenko>and the orientation of those cells can matter too, just like order of edges
23:46:31  <mikolalysenko>in a directed graph
23:46:41  <mikolalysenko>if you disregard ordering, you get what is called a "hypergraph"
23:46:56  <mikolalysenko>and if you only care about ordering up to one flip (ie odd/even) then it is called a simplicial complex
23:47:04  <mikolalysenko>which is what people study in homology theory
23:47:13  <mikolalysenko>and if you allow for general orderings, it is called a simplicial set
23:47:20  <mikolalysenko>which is used in higher dimensional category theory
23:47:41  <mikolalysenko>(I don't really know why they do that, probably a fifthworld problem)
23:47:54  * CryptoQuickquit (Quit: CryptoQuick)
23:49:14  <dominictarr>fifthworld?
23:49:20  <jez0990_>http://digitalcortex.net/science/fifth-world-problems/#.UUj5P3E4LUM
23:49:26  <dominictarr>oh, 5 dimensions!
23:49:32  <jez0990_>new to me too - funny :D
23:49:40  <mikolalysenko>from this: http://www.reddit.com/r/fifthworldproblems
23:49:51  <mikolalysenko>sort of a parody of r/firstworldproblems
23:50:17  <mbalho>nice
23:50:25  <substack>+1
23:50:44  <mikolalysenko>which is basically how I would describe most of higher dimensional category theory
23:51:05  <mikolalysenko>it was created by the mad mathematician grothendieck, who now lives in the mountains in france and eats rutabegas, while talking to god
23:51:20  <mikolalysenko>and no, I am not making that up
23:51:50  <Raynos>miko, dominictarr, jez0990: I would understand graphs, meshes & posets more if you used to render subsets of relationships in npm
23:51:54  * yorickquit (Remote host closed the connection)
23:52:08  <Raynos>less maths / explanations. More visual representations of the npm ecosystem
23:52:52  <dominictarr>Raynos: that is the plan!
23:53:15  * Domenic_joined
23:53:19  * tmcwquit (Remote host closed the connection)
23:53:20  <mikolalysenko>well, I have a library for manipulating simplicial sets in js that I use for geometry processing: https://github.com/mikolalysenko/simplicial-complex
23:53:34  <Raynos>dominictarr: have you watched the elm video? http://www.ustream.tv/recorded/29330499
23:53:39  <mikolalysenko>so far though I think I am the only person using it
23:54:11  <Raynos>miko: what are you building with all those modules?
23:54:27  <mbalho>sentient robots duh
23:54:46  <mikolalysenko>ultimately: a system to do 3d printing stuff on demand in the browser
23:55:01  <mikolalysenko>like topology optimization/procedural design of manufactured objects
23:55:01  <mbalho>mikolalysenko: im gonna take a stab at using your rle-voxeljs module to add a import > .stl file option to voxel-painter
23:55:15  <mikolalysenko>mbalho: cool! let me know if you hit any snags
23:55:17  * st_lukejoined
23:55:31  <dominictarr>mikolalysenko: awesome!
23:56:04  <mikolalysenko>yeah, my idea is that you could use it to create next-generation drop shipping like services
23:56:17  <mikolalysenko>where instead of storing stuff in warehouses, you just design and customize it on demand
23:56:23  <mikolalysenko>then print it out and ship it off to customers
23:56:24  <dominictarr>yes
23:56:27  * CryptoQuickjoined
23:56:27  <dominictarr>this is the future
23:56:45  <dominictarr>then we can have github for artifacts
23:56:49  <mikolalysenko>and using services like shapeways, you can basically automate/commoditze the entire manufacturing step
23:57:02  <mikolalysenko>no, not github for artifacts: github for programs that generate infinite artifacts
23:57:13  <mikolalysenko>of arbitrary customizable types
23:57:25  <dominictarr>oh right, subtle difference
23:57:35  * nk109quit (Quit: Computer has gone to sleep.)
23:57:45  <mikolalysenko>this is why I am targeting js though
23:57:54  <mikolalysenko>since you need to be able to script the process of shape generation
23:58:04  <dominictarr>yes, good choice
23:58:16  <dominictarr>also, we have the best package manager
23:58:22  <mikolalysenko>true
23:58:27  <mikolalysenko>that is actually what won me over
23:58:33  * ralphtheninjaquit (Read error: Operation timed out)
23:58:40  * mikealquit (Quit: Leaving.)
23:58:52  <dominictarr>funny, really, how js never even had modules,
23:59:02  <dominictarr>and we ended up with the best system
23:59:09  <dominictarr>(so far)
23:59:21  <mikolalysenko>well, "best" is really a matter of opinion, but I agree that I like it the most