00:00:01
| * ircretary | quit (Remote host closed the connection) |
00:00:09
| * ircretary | joined |
00:03:01
| * nk109 | joined |
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
| * thatguydan | quit (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> | ├─┬ level-live-stream@1.1.0 |
00:27:37
| <mmckegg> | │ └── level-hooks@1.1.2 |
00:27:38
| <mmckegg> | └─┬ level-sublevel@4.0.0 invalid |
00:27:38
| <mmckegg> | └── level-hooks@4.1.1 |
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
| * mikeal | quit (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
| * dguttman | quit (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
| * thl0 | joined |
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_luke | joined |
00:47:38
| <dominictarr> | mmckegg: fixed in level-sublevel@4.0.2 |
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_luke | quit (Remote host closed the connection) |
01:07:50
| * CryptoQuick | quit (Ping timeout: 272 seconds) |
01:10:12
| * thatguydan | joined |
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
| * dominictarr | quit (Read error: Connection reset by peer) |
01:12:39
| <mmckegg> | ah, that may be it... |
01:12:53
| * tilgovi | quit (Remote host closed the connection) |
01:12:54
| * dominictarr | joined |
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
| * dominictarr | quit (Read error: Connection reset by peer) |
01:20:33
| * dominictarr | joined |
01:24:15
| * tilgovi | joined |
01:28:12
| * dguttman | joined |
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
| * shama | quit (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_luke | joined |
02:04:40
| * dominictarr | quit (Quit: dominictarr) |
02:06:55
| * defunctzombie_zz | changed nick to defunctzombie |
02:23:01
| <chilts> | heh, indeed :) |
02:26:14
| * defunctzombie | changed nick to defunctzombie_zz |
02:31:55
| * st_luke | quit (Remote host closed the connection) |
02:46:49
| * st_luke | joined |
02:53:56
| * thl0 | quit (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
| * ralphtheninja | quit (Ping timeout: 245 seconds) |
03:02:43
| <mbalho> | rvagg: yea exactly |
03:12:03
| * jibay | quit (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
| * mikeal | joined |
03:41:01
| <mbalho> | hij1nx: agreed, i started writing node for cats but never finished it |
04:00:12
| * AvianFlu | quit (Remote host closed the connection) |
04:02:51
| <chrisdickinson> | mbalho: i'm working on something similar too :D |
04:02:57
| * AvianFlu | joined |
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
| * mikeal | quit (Quit: Leaving.) |
04:17:06
| * mikeal | joined |
04:17:45
| * mikeal | quit (Read error: Connection reset by peer) |
04:17:48
| * mikeal1 | joined |
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_luke | quit (Read error: Connection reset by peer) |
04:20:58
| * st_luke | joined |
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
| * mikeal1 | quit (Quit: Leaving.) |
04:31:10
| * mikeal | joined |
04:31:35
| * mikeal | quit (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
| * mikeal | joined |
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_luke | quit (Remote host closed the connection) |
05:14:50
| * AvianFlu | quit (Read error: Connection reset by peer) |
05:15:19
| * AvianFlu | joined |
05:17:08
| * jlord | joined |
05:21:17
| * Domenic_ | quit (Ping timeout: 245 seconds) |
05:22:20
| * thatguydan | quit (Quit: thatguydan) |
05:30:49
| * dguttman | quit (Quit: dguttman) |
05:32:51
| * AvianFlu | quit (Remote host closed the connection) |
05:34:51
| * st_luke | joined |
05:41:35
| * jlord | quit (Quit: leaving) |
05:44:35
| * defunctzombie_zz | changed nick to defunctzombie |
05:46:54
| * mmckegg | quit (Quit: mmckegg) |
05:47:20
| * jlord | joined |
05:47:28
| <jlord> | ALL CAPS |
05:47:28
| <LOUDBOT> | AINT NO PARTY LIKE AN INTJ PARTY CAUSE AN INTJ PARTY IS COORDINATED |
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:00
| <LOUDBOT> | I WANT TO HAVE SEX WITH MADONNA TO LA ISLA BONITA. |
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:37
| <LOUDBOT> | mbalho: <SubStack:##turtles> TO THAT SMALL PORTION OF THE BRITISH PUBLIC WHICH TAKES ENLIGHTENED INTEREST IN STUDYING THE MANNERS AND CUSTOMS OF THE OLDEN EAST |
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
| * thatguydan | joined |
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_luke | quit (Remote host closed the connection) |
06:49:10
| * tanepiper | quit (Ping timeout: 256 seconds) |
06:57:41
| * tanepiper | joined |
06:58:40
| * defunctzombie | changed nick to defunctzombie_zz |
07:01:04
| * marcello3d | quit (Remote host closed the connection) |
07:29:01
| <Raynos> | More todofrp crazyness ( http://raynos.graphics-server.jit.su/full/todo.js ) |
08:11:19
| * mmckegg | joined |
08:34:04
| <rowbit> | /!\ ATTENTION: (default-local) paid account successfully upgraded /!\ |
08:34:04
| <rowbit> | /!\ ATTENTION: (default-local) itzguru@... successfully signed up for developer browserling plan ($20). Cash money! /!\ |
08:34:15
| <substack> | yay |
08:54:56
| * thatguydan | quit (Quit: thatguydan) |
09:08:20
| * sbp | quit (Quit: Leaving.) |
09:25:06
| * Nexxy | quit (Remote host closed the connection) |
09:28:56
| * Nexxy | joined |
09:54:42
| * tilgovi | quit (Remote host closed the connection) |
10:14:22
| * mmckegg | quit (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
| * thl0 | joined |
11:08:10
| <substack> | and they should be of moderate utility to everyone else too |
11:13:40
| * dominictarr | joined |
11:21:52
| * jibay | joined |
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
| * shuaib | joined |
11:27:11
| * thatguydan | joined |
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
| * ins0mnia | joined |
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
| * dominictarr | quit (Quit: dominictarr) |
11:52:38
| * ins0mnia | quit (Ping timeout: 245 seconds) |
11:55:12
| * thatguydan | quit (Quit: thatguydan) |
11:57:19
| * ralphtheninja | joined |
12:03:45
| * yorick | joined |
12:03:45
| * yorick | quit (Changing host) |
12:03:45
| * yorick | joined |
12:14:14
| * tilgovi | joined |
12:17:48
| * ralphtheninja | quit (Ping timeout: 276 seconds) |
12:23:46
| * ralphtheninja | joined |
12:26:08
| <juliangruber> | substack: all firefox and chrome tests are failing :O |
12:40:21
| * tilgovi | quit (Remote host closed the connection) |
19:22:45
| * defunctzombie_zz | changed nick to defunctzombie |
19:30:01
| <rowbit> | /!\ ATTENTION: (default-local) paid account successfully upgraded /!\ |
19:30:01
| <rowbit> | /!\ ATTENTION: (default-local) jerb@... successfully signed up for developer browserling plan ($20). Cash money! /!\ |
19:31:38
| * yorick | quit (Quit: No Ping reply in 180 seconds.) |
19:31:56
| * yorick | joined |
19:31:56
| * yorick | quit (Changing host) |
19:31:56
| * yorick | joined |
19:36:23
| * st_luke | quit (Remote host closed the connection) |
19:37:14
| * ITpro | joined |
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_luke | joined |
19:54:01
| <Domenic_> | perfect use case for a jQuery plug-in. |
19:56:39
| * st_luke | quit (Remote host closed the connection) |
19:59:03
| * Domenic_ | quit (Remote host closed the connection) |
20:02:49
| * Domenic_ | joined |
20:03:14
| * jibay | joined |
20:09:11
| <Raynos> | o_o; |
20:18:50
| * st_luke | joined |
20:19:25
| * dominictarr | joined |
20:19:34
| <Domenic_> | Raynos: any chance you want the @Raynos twitter handle? |
20:19:45
| * ITpro | quit (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
| * AvianFlu | quit (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
| * ITpro | joined |
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
| * crank | quit (Ping timeout: 256 seconds) |
20:41:52
| * crank | joined |
20:45:58
| * dominictarr | quit (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
| * AvianFlu | joined |
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
| * mikolalysenko | quit (Ping timeout: 264 seconds) |
21:01:51
| * nicholasz | joined |
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:22
| <st_luke> | BUT WHAT ABOUT MY PERSONAL BRAND |
21:04:22
| <LOUDBOT> | CRAP MISSPELLING HIT THE RESET BUTTON |
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
| * chrisdickinson | works 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
| * mikolalysenko | joined |
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
| * chrisdickinson | nods |
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_luke | quit (Remote host closed the connection) |
21:45:35
| * st_luke | joined |
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
| * mikolalysenko | quit (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
| * jibay | quit (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
| * dominictarr | joined |
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
| * mmckegg | joined |
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
| * sbp | joined |
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
| * thatguydan | joined |
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
| * mikolalysenko | joined |
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
| * CryptoQuick | quit (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
| * CryptoQuick | joined |
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
| <LOUDBOT> | THAT'S RIGHT |
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
| * thatguydan | quit (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
| * thl0 | quit (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
| * AvianFlu | quit (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
| * thl0 | joined |
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
| * thl0 | quit (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
| * fent | joined |
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
| * thl0 | joined |
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
| * thl0 | quit (Remote host closed the connection) |
23:42:17
| * mikeal | joined |
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_luke | quit (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
| * CryptoQuick | quit (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
| * yorick | quit (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
| * tmcw | quit (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_luke | joined |
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
| * CryptoQuick | joined |
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
| * nk109 | quit (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
| * ralphtheninja | quit (Read error: Operation timed out) |
23:58:40
| * mikeal | quit (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 |