00:01:06  * dlwicksellquit (Quit: Leaving.)
00:02:36  * slajaxquit (Ping timeout: 246 seconds)
00:03:17  <foxnesn>silly question but is there a reason some tutorials use app.js rather than index.js ?
00:03:21  <foxnesn>does it matter?
00:03:47  * lmorchardquit (Ping timeout: 240 seconds)
00:03:54  <ljharb>foxnesn: no
00:04:29  <foxnesn>okay thanks didn't think so but it seemed suspicious. like index.js makes them most sense but at one point people starting using app.js
00:04:45  * lmorchardjoined
00:05:55  * elichai2quit (Quit: Connection closed for inactivity)
00:07:02  * bitmaskquit (Read error: Connection reset by peer)
00:08:26  <ljharb>index.js is the default `require` entry point
00:10:17  * robsilver245joined
00:10:28  * omaralvaradolunajoined
00:11:24  * omaralva_joined
00:11:38  * robsilver245quit (Client Quit)
00:11:57  * carifjoined
00:14:26  * omaralvaradolunaquit (Ping timeout: 240 seconds)
00:15:26  * omaralva_quit (Ping timeout: 240 seconds)
00:16:45  * kakashiALjoined
00:18:32  * saladquit (Quit: salad)
00:20:33  * freetoljoined
00:21:28  * kakashiALquit (Ping timeout: 250 seconds)
00:23:38  * shushjoined
00:25:42  * omaralvaradolunajoined
00:25:55  * keepLearning512quit (Remote host closed the connection)
00:26:39  * omaralva_joined
00:29:56  * omaralvaradolunaquit (Ping timeout: 240 seconds)
00:30:48  * shushquit (Remote host closed the connection)
00:30:56  * omaralva_quit (Ping timeout: 240 seconds)
00:31:11  * shushjoined
00:31:26  * shushquit (Remote host closed the connection)
00:32:47  * orbyt_joined
00:34:08  <rom1504>you could as well use entry.js or anythingelse.js
00:34:09  * shushjoined
00:34:29  * tlentjoined
00:38:00  * tlentquit (Remote host closed the connection)
00:39:06  * renlololjoined
00:41:08  * slajaxjoined
00:41:22  * shushquit (Remote host closed the connection)
00:45:44  * slajaxquit (Ping timeout: 250 seconds)
00:47:04  * renlololquit (Ping timeout: 268 seconds)
00:48:12  * macwinnerjoined
00:48:54  * slajaxjoined
00:49:12  * skyikotjoined
00:51:27  * jlippsquit (Quit: My comp has gone to sleep. ZZZzzz…)
00:52:18  * realisationquit (Ping timeout: 246 seconds)
00:53:06  * carifquit (Ping timeout: 250 seconds)
00:53:13  * glijoined
00:53:54  * jjrabbitjoined
00:53:57  <jjrabbit>hello
00:55:19  * shushjoined
00:56:09  <jjrabbit>anyone know why doing "const {performance} = require('perf_hooks');" i am able to call performance, but if i omit the curly braces and just write "const performance = require('perf_hooks');" i'm unable to call performance?
00:56:54  <jjrabbit>so first format works but second does not
00:56:56  * slajaxquit (Ping timeout: 268 seconds)
00:57:07  * feelextraquit (Ping timeout: 240 seconds)
00:57:58  <shoky_>jjrabbit: because require('perf_hooks') is an object, with a property named "performance". in the first case you're destructuring that object, in the 2nd case you're just assigning the object itself to the variable
00:58:34  <shoky_>(haven't looked at the perf_hooks docs, just answering based on the syntax and your question)
00:59:01  * murorchanged nick to markasoftware
00:59:12  <jjrabbit>shoky_: perf-hooks isn't a module just like every other module?
00:59:17  * dlwickselljoined
00:59:48  <shoky_>jjrabbit: and requiring this module gives you just a regular js value, like every other module. in this case the js value is an object
01:00:59  <jjrabbit>how come i don't have to include the curly braces when declaring my other modules?
01:01:16  <shoky_>jjrabbit: just console.log( require('perf_hooks') ) you'll see it's an object with 2 keys: "performance" and "PerformanceObserver"
01:01:30  <jjrabbit>ok good idea
01:01:37  <shoky_>jjrabbit: because those modules do not export an object, they probably export a function
01:02:17  <jjrabbit>ok so the difference here is 'perf_hooks' in an object
01:02:17  <shoky_>jjrabbit: and using the curly braces is exactly the same as doing: const performance = require('perf_hooks').performance;
01:02:29  <jjrabbit>cool
01:02:35  <shoky_>require('perf_hooks') is an object, yes
01:02:46  <jjrabbit>shoky_: did you just happen to know that?
01:02:51  <jjrabbit>that it's an object i mean
01:03:29  <shoky_>jjrabbit: at first i just answered based on what you were stating. since then i've looked at the docs and tried that console.log myself
01:04:06  * Unlimiterquit (Quit: Connection closed for inactivity)
01:04:08  <jjrabbit>shoky_: well you were right on point
01:04:08  <shoky_>so no, i didn't really know it
01:04:17  <shoky_>until checking, that is
01:04:24  <jjrabbit>shoky_: thanks!
01:04:27  * omaralvaradolunajoined
01:04:28  <shoky_>sure
01:04:41  * jimleiquit (Quit: http://quassel-irc.org - Chat comfortably. Anywhere.)
01:05:27  * omaralva_joined
01:07:53  * carifjoined
01:08:26  * omaralvaradolunaquit (Ping timeout: 240 seconds)
01:10:02  * realisationjoined
01:10:03  * omaralva_quit (Ping timeout: 250 seconds)
01:13:27  * carifquit (Ping timeout: 240 seconds)
01:13:57  * cnsvcjoined
01:15:47  * realisationquit (Ping timeout: 240 seconds)
01:16:30  * edrocksjoined
01:19:31  * ffx_quit (Quit: Leaving...)
01:20:00  * ed209quit (Remote host closed the connection)
01:20:07  * ed209joined
01:23:56  * slajaxjoined
01:24:20  * DeltaHeavyquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
01:26:24  * realisationjoined
01:28:36  * carifjoined
01:32:06  * slajaxquit (Ping timeout: 250 seconds)
01:33:32  * Fishrock123joined
01:34:55  * aerexquit (Quit: WeeChat 2.2)
01:35:34  * slajaxjoined
01:38:01  * DeltaHeavyjoined
01:39:54  * slajaxquit (Ping timeout: 246 seconds)
01:40:47  * v2334joined
01:41:12  * dlwicksellquit (Ping timeout: 244 seconds)
01:43:12  * sinusssjoined
01:43:12  * sinusssquit (Read error: Connection reset by peer)
01:43:17  * Sven_vBquit (Remote host closed the connection)
01:43:45  * Sven_vBjoined
01:43:48  * carifquit (Ping timeout: 245 seconds)
01:43:51  * aerexjoined
01:45:09  * korzqquit (Quit: ZNC - http://znc.in)
01:45:14  * v2334quit (Remote host closed the connection)
01:45:28  * macwinnerquit (Ping timeout: 245 seconds)
01:47:47  * omaralvaradolunajoined
01:49:11  * igemnacejoined
01:50:05  * korzqjoined
01:50:05  * korzqquit (Changing host)
01:50:05  * korzqjoined
01:50:30  * slajaxjoined
01:53:56  * omaralvaradolunaquit (Remote host closed the connection)
01:55:09  * slajaxquit (Ping timeout: 244 seconds)
01:55:46  * theWhisper_joined
01:56:40  * slajaxjoined
01:58:50  * electronicmajiquit (Quit: My Mac has gone to sleep. ZZZzzz…)
01:59:15  * edrocksquit (Quit: Textual IRC Client: www.textualapp.com)
01:59:29  * carifjoined
02:00:56  * slajaxquit (Ping timeout: 240 seconds)
02:02:03  * antsmartianjoined
02:02:13  * omaralvaradolunajoined
02:02:34  * eblipquit (Read error: Connection reset by peer)
02:03:26  * theWhisper_quit (Ping timeout: 240 seconds)
02:06:23  * omaralvaradolunaquit (Ping timeout: 250 seconds)
02:06:24  * eblipjoined
02:06:56  * jimleijoined
02:08:55  * electronicmajijoined
02:10:14  * carifquit (Ping timeout: 250 seconds)
02:10:19  * d3x0rquit (Read error: Connection reset by peer)
02:11:01  * d3x0rjoined
02:15:57  * theWhisper_joined
02:17:38  * kakashiALjoined
02:18:49  * spacesuitdiverjoined
02:19:30  * omaralvaradolunajoined
02:20:13  <jjrabbit>if my node server seems to be in a "hung" state, is there anything i can do to figure out what's going on?
02:20:45  <jjrabbit>if i hit spacebar, or any other key in the node window it will resume but i want to know what it's getting stuck on
02:22:08  * kakashiALquit (Ping timeout: 245 seconds)
02:24:03  * omaralvaradolunaquit (Ping timeout: 264 seconds)
02:24:20  * promethquit (Quit: My Mac Mini has gone to sleep. ZZZzzz…)
02:24:56  * carifjoined
02:26:33  * electronicmajiquit (Quit: My Mac has gone to sleep. ZZZzzz…)
02:26:57  * electronicmajijoined
02:28:52  * dylancolequit (Ping timeout: 250 seconds)
02:31:20  * electronicmajiquit (Read error: Connection reset by peer)
02:32:21  * schneid3306joined
02:33:07  * Ergoquit (Remote host closed the connection)
02:36:04  * omaralvaradolunajoined
02:37:08  * carifquit (Ping timeout: 245 seconds)
02:49:31  * Arcaelyxquit (Ping timeout: 250 seconds)
02:50:12  * Roughyquit (Quit: Meadow Fresh milk)
02:52:54  * carifjoined
02:52:54  * realisationquit (Read error: Connection reset by peer)
02:52:57  * antsmartianquit (Remote host closed the connection)
02:58:41  * realisationjoined
03:00:46  * schneid3306quit (Quit: Quit.)
03:02:11  * schneid3306joined
03:03:48  * mihaelejoined
03:05:07  * NpcOrangeManBadquit (Quit: Bye)
03:05:42  * OrangeManBadjoined
03:05:42  * carifquit (Ping timeout: 250 seconds)
03:06:16  * marthinaljoined
03:06:36  * mihaelequit (Client Quit)
03:08:31  * mihaelejoined
03:09:14  * Fishrock123quit (Remote host closed the connection)
03:09:16  * realisationquit (Ping timeout: 246 seconds)
03:09:31  * Fishrock123joined
03:10:00  * Fishrock123quit (Remote host closed the connection)
03:10:28  * marthinalquit (Ping timeout: 250 seconds)
03:20:26  * carifjoined
03:22:45  * blfjoined
03:23:28  <blf>Any ideas why jest 24.1 would be taking so long to cache files? If I set --maxWorkers=1 it happens instantly. Otherwise, it happens randomly. Sometimes after 4 or 5 runs. Sometimes after 30.
03:26:18  * Venemoquit (Ping timeout: 272 seconds)
03:27:34  * gambl0r3joined
03:29:38  * carifquit (Ping timeout: 245 seconds)
03:32:48  <GreenJello>blf, I seem to remember reading a github issue about this, and it was said to be expected iirc
03:33:39  <blf>GreenJello: Ok. Just figured I'd ask in case I was doing something obviously stupid :)
03:34:07  <GreenJello>in general, jest does quite a few things by heuristics which tend to appear random to humans
03:36:44  * apparitionjoined
03:38:03  * CrazyTux[m]quit (Quit: This computer has gone to sleep)
03:42:12  * isiahmeadowsjoined
03:42:33  * isiahmeadowspart
03:43:43  * isiahmeadowsjoined
03:45:22  * carifjoined
03:47:23  * isiahmeadowsquit (Client Quit)
03:47:31  * DeltaHeavyquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
03:48:32  * isiahmeadowsjoined
03:49:07  <isiahmeadows>What's the standard way to load built-in modules like `require("fs")` from native N-API modules?
03:49:19  * Fishrock123joined
03:50:12  * lucid-lullabyquit (Remote host closed the connection)
03:50:31  * lucid-lullabyjoined
03:52:08  * akosednarquit (Ping timeout: 245 seconds)
03:52:16  <isiahmeadows>What's the standard way to load built-in modules like `require("fs")` from native N-API modules? I didn't see anything in https://nodejs.org/api/n-api.html giving me any clear hints.
03:52:47  * akosednarjoined
03:52:47  * akosednarquit (Changing host)
03:52:47  * akosednarjoined
03:53:45  <systemfault>The idea itself doesn't make much sense.
03:53:48  * Fishrock123quit (Ping timeout: 245 seconds)
03:54:13  <systemfault>You wrap as little as possible in native code and then the rest of the library should be written in JS.
03:55:56  * carifquit (Ping timeout: 240 seconds)
03:56:22  * the_antjoined
03:56:36  <isiahmeadows>systemfault: I get that. Just in my case, I was thinking of writing a library where 99% of it would necessarily be native (lot of syscalls), so I was hoping to avoid the 1% of JS.
03:58:04  <systemfault>Do you think that "fs" is all native?
03:58:25  <systemfault>(It's pretty much all JS until the libuv layer)
03:59:11  <isiahmeadows>It's just so I can send a `fs.ReadStream` to the user where I already have the file descriptor.
04:02:08  * Fishrock123joined
04:02:26  * akosednarquit (Ping timeout: 240 seconds)
04:03:30  <isiahmeadows>systemfault: It just seems like a waste to go through a full JS module when that's the only JS thing I need to call other than function parameters.
04:04:55  <systemfault>I wouldn't be surprised if you could just return the file handle from native code and build a readstream from it (Assuming that's what you want)
04:05:32  * braincrashquit (Quit: bye bye)
04:05:57  <isiahmeadows>Yeah, but that's about all I'd need from an API standpoint - I'm exposing a `fs.ReadStream` instead of the raw file descriptor, but that's literally it.
04:06:22  * Nes173quit (Remote host closed the connection)
04:06:28  * xsjsxjoined
04:06:47  * Nes173joined
04:07:05  <xsjsx>With my node script, I want to display indicators of the current progress. Like 4 or 5 different variables. Instead of writing custom console.log('.....\r')'s so I can see the numbers updating, but not scrolling.. does anyone know a package that does this?
04:07:15  * mihaelequit (Quit: My MacBook has gone to sleep. ZZZzzz…)
04:08:06  <isiahmeadows>systemfault: Better question: does `require` exist in the global object made accessible via `napi_get_global`?
04:08:06  * kjartanquit (Read error: Connection reset by peer)
04:08:25  * schneid3306quit (Quit: ZZZzzz…)
04:08:45  <systemfault>I don't know, highly unlikely to me.
04:09:30  * mihaelejoined
04:09:43  <systemfault>Would be insanity for a JS code to load native code that would itself load js code... to load more native code.
04:09:46  <systemfault>IHMO.
04:10:09  * braincrashjoined
04:10:45  * k_joined
04:11:01  * kjartanjoined
04:11:57  * carifjoined
04:13:58  * k_quit (Client Quit)
04:14:53  * sadtacojoined
04:16:05  <isiahmeadows>systemfault: Not like you couldn't already: https://nodejs.org/api/n-api.html#n_api_script_execution
04:17:42  * realisationjoined
04:18:28  * kakashiALjoined
04:20:48  * lexileojoined
04:21:03  * windragonquit (Ping timeout: 268 seconds)
04:21:06  * Jervis_quit (Ping timeout: 250 seconds)
04:23:07  * kakashiALquit (Ping timeout: 240 seconds)
04:23:17  <deltab>xsjsx: do you know of programs that do that? if so, look at what they use
04:23:57  * CrazyTux[m]joined
04:24:12  * Stephen66quit (Quit: Connection closed for inactivity)
04:24:15  * blfquit (Quit: Page closed)
04:24:22  <xsjsx>it's either vue-cli or create-nuxt-app or whatever it is, that does it. I'll go look thx
04:24:34  * carifquit (Ping timeout: 250 seconds)
04:27:33  * tmquit (Ping timeout: 245 seconds)
04:27:52  * Cabanossiquit (Ping timeout: 252 seconds)
04:30:08  * slajaxjoined
04:31:21  * tmjoined
04:33:37  * Orbitrixquit (Remote host closed the connection)
04:35:19  * hemstockquit (Read error: Connection reset by peer)
04:35:45  * Cabanossijoined
04:37:04  * hemstockjoined
04:37:18  * windragonjoined
04:37:22  * CrazyTux[m]quit (Quit: This computer has gone to sleep)
04:39:32  * carifjoined
04:48:26  * Nes173quit (Changing host)
04:48:27  * Nes173joined
04:51:10  * carifquit (Ping timeout: 272 seconds)
04:51:26  * orbyt_quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
04:56:16  * mihaelequit (Quit: My MacBook has gone to sleep. ZZZzzz…)
05:01:45  * skyikotquit (Remote host closed the connection)
05:05:56  * carifjoined
05:10:08  * xsjsxquit (Quit: Leaving)
05:14:13  * carifquit (Ping timeout: 245 seconds)
05:18:53  * nalkrijoined
05:19:43  * erg0s1joined
05:19:50  * marthinaljoined
05:23:39  * isiahmeadowsquit
05:25:04  * Sven_vBquit (Remote host closed the connection)
05:25:29  * Sven_vBjoined
05:25:46  * sunil_bansaljoined
05:26:33  * led_dark_1quit (Quit: led_dark_1)
05:27:06  * kaankeskinjoined
05:27:39  * deviantferoquit (Ping timeout: 268 seconds)
05:29:32  * deviantferojoined
05:29:49  * carifjoined
05:30:14  * CrazyTux[m]joined
05:31:12  * arunkumar413joined
05:31:15  * Fishrock123quit (Quit: Leaving...)
05:32:58  * johnny56_quit (Ping timeout: 272 seconds)
05:33:02  * slajaxquit (Ping timeout: 250 seconds)
05:41:44  * morenoh149joined
05:41:56  * sattellitejoined
05:42:28  * carifquit (Ping timeout: 272 seconds)
05:43:08  * macwinnerjoined
05:43:30  * jstimmjoined
05:44:56  * dylancolejoined
05:47:46  * macwinnerquit (Ping timeout: 250 seconds)
05:48:26  * gambl0r3quit (Ping timeout: 240 seconds)
05:48:39  * gambl0r3joined
05:50:40  * trevorquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
05:54:09  * theWhisper_quit (Read error: Connection reset by peer)
05:57:26  * realisationquit (Ping timeout: 240 seconds)
05:57:27  * carifjoined
06:00:17  * neonpastorquit (Quit: ZNC 1.8.x-nightly-20190102-481fdb5a - https://znc.in)
06:04:10  * lmorchardquit (Ping timeout: 244 seconds)
06:05:01  * lmorchardjoined
06:07:08  * johnny56_joined
06:07:30  * lpinjoined
06:07:43  * jamesdrawneekjoined
06:08:47  * ferzquit (Remote host closed the connection)
06:09:58  * neonpastorjoined
06:10:48  * carifquit (Ping timeout: 246 seconds)
06:11:55  * jamesdrawneekquit (Ping timeout: 244 seconds)
06:14:08  * deviantferoquit (Ping timeout: 272 seconds)
06:17:29  * slajaxjoined
06:19:21  * kakashiALjoined
06:21:47  * slajaxquit (Ping timeout: 240 seconds)
06:22:08  * aerexquit (Ping timeout: 245 seconds)
06:23:36  * Jetimonjoined
06:24:13  * kakashiALquit (Ping timeout: 246 seconds)
06:25:03  * devc`silvaquit (Remote host closed the connection)
06:25:33  * devc`silvajoined
06:25:51  * HexSpecterjoined
06:25:58  * cthulchu_joined
06:26:06  * carifjoined
06:26:26  * keepLearning512joined
06:27:38  * deviantferojoined
06:29:30  * Arcaelyxjoined
06:30:47  * gambl0r3quit (Ping timeout: 240 seconds)
06:30:53  * MatrixBot3quit (Ping timeout: 245 seconds)
06:31:06  * keepLearning512quit (Ping timeout: 250 seconds)
06:31:06  * Jetimonquit (Ping timeout: 252 seconds)
06:32:34  * apparitionquit (Quit: My iMac has gone to sleep. ZZZzzz…)
06:34:51  * MatrixBot3joined
06:37:13  * userxquit (Quit: userx)
06:38:25  * slajaxjoined
06:38:48  * carifquit (Ping timeout: 246 seconds)
06:39:44  * esrsejoined
06:40:17  * sunil_bjoined
06:40:53  * sunil_bansalquit (Ping timeout: 245 seconds)
06:41:32  * ravustajajoined
06:42:58  * slajaxquit (Ping timeout: 245 seconds)
06:43:23  * dylancolequit (Ping timeout: 245 seconds)
06:45:30  * kakashiALjoined
06:46:51  * sillysluxquit (Ping timeout: 246 seconds)
06:47:41  * slajaxjoined
06:50:37  * catbustersjoined
06:51:14  * zap0joined
06:51:38  <zap0>how might i query for the /~ (home) directory?
06:53:57  * carifjoined
06:54:41  <zap0>os.homedir()
06:55:48  * slajaxquit (Ping timeout: 250 seconds)
06:56:35  * _xorquit (Quit: Leaving)
06:57:07  * slajaxjoined
06:57:16  * keepLearning512joined
07:01:27  * Venemojoined
07:01:43  * slajaxquit (Ping timeout: 245 seconds)
07:02:12  * keepLear_joined
07:02:58  * keepLearning512quit (Ping timeout: 245 seconds)
07:03:39  * admin123joined
07:03:42  * kikudjirojoined
07:04:30  <zap0>is that going to end with a / char?
07:05:47  * morenoh149quit (Ping timeout: 240 seconds)
07:06:38  * carifquit (Ping timeout: 250 seconds)
07:06:40  * sunil_bquit (Remote host closed the connection)
07:07:51  <GreenJello>zap0, that's the way to to do it, and I don't think it'll end with a / in any normal case, but you should usually be using path.join or similar, which handles that variance
07:08:16  * firedfoxjoined
07:09:11  * jamesdrawneekjoined
07:13:23  * jamesdrawneekquit (Ping timeout: 245 seconds)
07:14:04  * admin123changed nick to morenoh149
07:14:48  * slajaxjoined
07:15:09  * saladjoined
07:15:34  * sQVejoined
07:15:34  * CrazyTux[m]quit (Ping timeout: 272 seconds)
07:16:07  * CrazyTux[m]joined
07:16:32  * chargenjoined
07:18:40  * realisationjoined
07:19:12  * slajaxquit (Ping timeout: 250 seconds)
07:21:24  * carifjoined
07:21:34  * dylancolejoined
07:22:02  * sQVequit (Quit: Bye!)
07:24:37  * kaankeskinquit (Quit: http://www.kiwiirc.com/ - A hand crafted IRC client)
07:24:54  * sQVejoined
07:24:57  * keepLear_quit (Remote host closed the connection)
07:26:31  * carifquit (Ping timeout: 246 seconds)
07:28:06  * darkSeidjoined
07:29:47  * morenoh149quit (Ping timeout: 240 seconds)
07:31:19  <MJCD>~ works fine haha
07:31:22  <MJCD>KSS
07:31:23  <MJCD>KISS
07:32:31  * sunil_bansaljoined
07:32:53  * sunil_bansalquit (Remote host closed the connection)
07:33:09  * sunil_bansaljoined
07:35:10  * groomjoined
07:35:25  * darkSeidquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
07:37:26  * morenoh149joined
07:39:13  * mat001quit (Remote host closed the connection)
07:41:13  * sQVequit (Ping timeout: 246 seconds)
07:42:46  * sQVejoined
07:45:30  * Jetimonjoined
07:46:34  * morenoh149quit (Remote host closed the connection)
07:48:26  * kakashiALquit (Ping timeout: 240 seconds)
07:48:30  * firedfoxquit (Remote host closed the connection)
07:49:08  * morenoh149joined
07:49:32  * carifjoined
07:50:21  <geirha>zap0: os.homedir() returns whatever the HOME environment variable is set to, just like ~ in the shell, so it mainly depends on whether or not your passwd entry has a trailing slash or not
07:51:03  <zap0>geirha ok. thanks for the tip. i followed GreenJello 's suggestion of using pth.join
07:51:58  <zap0>MJCD i have cross platform js. win32 too.
07:52:20  <zap0>one doesn't simply use ~
07:56:05  * enoqjoined
07:56:12  * enoqquit (Remote host closed the connection)
07:56:15  <MJCD>fair enough
07:56:38  <MJCD>I actually thought ~ worked on wndows with `fs` translating ~ to that automatically
07:56:47  <MJCD>would make life easier
07:57:43  * enoqjoined
07:59:04  * carifquit (Ping timeout: 246 seconds)
07:59:59  * kapil____joined
08:00:05  <MJCD>normalizing paths between OS's would actually be a pretty good idea, the more of that there is the less docker is required
08:00:09  <MJCD>a truly horrible product
08:02:34  * morenoh149quit (Ping timeout: 246 seconds)
08:04:41  * sQVequit (Quit: Bye!)
08:04:49  <MJCD>god damn man I wasnt joking yesterday
08:05:05  <MJCD>like 40% of ubuntu/debian is cups stuff and pdf handling stuff
08:05:21  <MJCD>and like 80% of it is required for the system to function
08:05:29  * sunil_bansalquit
08:05:50  * zavajoined
08:06:44  * enoqquit (Quit: enoq)
08:07:23  * enoqjoined
08:07:45  * morenoh149joined
08:08:33  * biboppawpart
08:08:37  * sattellitequit (Remote host closed the connection)
08:08:53  * synthmeatquit (Quit: WeeChat 2.3)
08:09:14  * synthmeatjoined
08:11:19  <GreenJello>MJCD, ~/ doesn't even work with fs on linux/osx
08:11:44  <GreenJello>MJCD, it's a shell thing
08:12:22  * Globe_Bloaterjoined
08:12:47  * slajaxjoined
08:17:38  * slajaxquit (Ping timeout: 272 seconds)
08:17:55  * dylancolequit (Remote host closed the connection)
08:18:14  * amarashovjoined
08:19:37  * Gustavo6046quit (Ping timeout: 268 seconds)
08:20:00  * omaralvaradolunaquit (Remote host closed the connection)
08:20:09  * zap0quit (Quit: zap0)
08:20:36  * omaralvaradolunajoined
08:20:41  * Sharaaljoined
08:20:57  * ffx_joined
08:21:54  * omaralva_joined
08:23:02  * omaralva_quit (Remote host closed the connection)
08:23:21  * omaralva_joined
08:23:41  * Sharaalquit (Read error: Connection reset by peer)
08:23:51  * kpattichajoined
08:23:56  * Sharaaljoined
08:24:16  * enoqquit (Quit: enoq)
08:24:56  * omaralvaradolunaquit (Ping timeout: 240 seconds)
08:25:19  * tkorejoined
08:25:44  * enoqjoined
08:27:16  * slajaxjoined
08:27:47  * morenoh149quit (Ping timeout: 240 seconds)
08:27:59  <cdunklau>if someone is up for writing one, https://docs.python.org/3/library/pathlib.html might be a good place to look for ideas
08:28:07  <cdunklau>i _really_ like that API
08:28:32  * Sharaalquit (Ping timeout: 250 seconds)
08:29:24  * sozubajoined
08:31:01  * carifjoined
08:31:17  * firedfoxjoined
08:31:51  * slajaxquit (Ping timeout: 246 seconds)
08:34:43  * dylancolejoined
08:40:43  * tkorequit (Ping timeout: 244 seconds)
08:40:48  * Sharaaljoined
08:40:51  * darkSeidjoined
08:41:32  * carifquit (Ping timeout: 250 seconds)
08:44:47  * Sharaalquit (Ping timeout: 240 seconds)
08:46:01  * slajaxjoined
08:46:43  * Sharaaljoined
08:47:29  * sozubaquit (Quit: bye bye)
08:48:55  * sozubajoined
08:53:00  * sozubaquit (Client Quit)
08:53:09  * Sharaalquit (Remote host closed the connection)
08:53:14  * slajaxquit (Ping timeout: 250 seconds)
08:53:18  * keepLearning512joined
08:53:22  * Sharaaljoined
08:53:29  * kpattich_joined
08:53:47  * ffx__joined
08:54:11  * slajaxjoined
08:54:13  * kpattichaquit (Ping timeout: 245 seconds)
08:54:22  * ffx_quit (Ping timeout: 246 seconds)
08:55:02  * ceborquit (Read error: Connection reset by peer)
08:55:15  * cebor_joined
08:57:37  * aerexjoined
08:58:00  * TheSuperGeekjoined
08:58:10  * sozubajoined
08:58:48  * slajaxquit (Ping timeout: 244 seconds)
08:58:56  * slajaxjoined
09:01:23  * carifjoined
09:02:59  * Sharaalquit (Remote host closed the connection)
09:03:28  * slajaxquit (Ping timeout: 246 seconds)
09:03:31  * ahmedelgabrijoined
09:05:11  * saladquit (Quit: salad)
09:05:46  * deviantferoquit (Ping timeout: 272 seconds)
09:06:19  * tkorejoined
09:06:25  * Sharaaljoined
09:07:52  * Sharaalquit (Remote host closed the connection)
09:07:57  * setpilljoined
09:08:40  * keepLear_joined
09:10:36  * jamesdrawneekjoined
09:10:53  * sozubaquit (Quit: bye bye)
09:11:20  * sozubajoined
09:11:26  * keepLearning512quit (Ping timeout: 240 seconds)
09:14:53  * jamesdrawneekquit (Ping timeout: 246 seconds)
09:14:54  * realisationquit (Ping timeout: 250 seconds)
09:17:40  * carifquit (Ping timeout: 268 seconds)
09:17:41  * setpillquit (Quit: o/)
09:19:16  * paraxialquit (Quit: The Lounge - https://thelounge.chat)
09:20:02  * setpilljoined
09:20:03  * paraxialjoined
09:22:25  * batterylowquit (Read error: Connection reset by peer)
09:23:55  * Sharaaljoined
09:24:16  * batterylowjoined
09:25:22  * Sharaal_joined
09:25:22  * Sharaalquit (Read error: Connection reset by peer)
09:26:00  * userxjoined
09:26:01  * Ergojoined
09:26:37  * morenoh149joined
09:27:36  * plutoniixjoined
09:27:57  * cnsvcquit (Ping timeout: 256 seconds)
09:28:39  * shush_joined
09:28:39  * Booster2ooojoined
09:29:44  * carifjoined
09:31:16  * CrazyTux[m]quit (Quit: This computer has gone to sleep)
09:32:13  * spacesuitdiverquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
09:32:23  * shushquit (Ping timeout: 268 seconds)
09:33:07  * mazulajoined
09:33:17  <mazula>https://repl.it/repls/TightEnlightenedOpensoundsystem any idea why I have this weird format output? x)
09:34:04  <mazula>hmm solved
09:34:43  <gajus>https://medium.com/@gajus/processing-large-volumes-of-data-safely-and-fast-using-node-js-and-postgresql-6aa62392cadb
09:34:47  <gajus>Just published an article
09:34:55  <gajus>Does anyone know who is currating nodeweekly.om?
09:34:57  <gajus>com*
09:35:19  * morenoh149quit (Ping timeout: 246 seconds)
09:36:11  * nalkrichanged nick to GCHQ
09:38:27  <jjrabbit>anyone know what format i'm supposed to send a JSON web token in back from client to server?
09:38:32  * morenoh149joined
09:39:57  <jjrabbit>like, how am i supposed to send this back to the server "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"
09:41:30  <jjrabbit>i mean i think that goes in as an objects value but anyone know what i put for the key?
09:43:26  * kakashiALjoined
09:43:56  * carifquit (Ping timeout: 250 seconds)
09:44:05  * GCHQchanged nick to nalkri
09:45:18  * morenoh149quit (Ping timeout: 244 seconds)
09:48:20  * kakashiALquit (Ping timeout: 252 seconds)
09:49:47  * kjartanquit (Read error: Connection reset by peer)
09:50:08  * firedfoxquit (Remote host closed the connection)
09:50:29  * kjartanjoined
09:50:33  * morenoh149joined
09:50:42  * keepLear_quit (Remote host closed the connection)
09:52:03  * sozubaquit (Quit: bye bye)
09:52:36  * firedfoxjoined
09:53:42  * kexdjoined
09:55:00  <deadbeat>jjrabbit: depends on the server, but maybe this way: https://stackoverflow.com/questions/33265812/best-http-authorization-header-type-for-jwt
09:55:09  * keepLearning512joined
09:56:20  * slajaxjoined
09:57:54  * Sweepyofacequit (Quit: The Lounge - https://thelounge.chat)
09:58:11  * Sweepyofacejoined
09:58:13  * sozubajoined
09:58:26  * carifjoined
09:59:08  * mainnetjoined
09:59:25  <jjrabbit>deadbeat: ok thanks, looks like i'm supposed to put it in the header somehow
09:59:36  * morenoh149quit (Ping timeout: 268 seconds)
10:00:47  <mainnet>Hello people! My pm2 keeps saying: In-memory PM2 is out-of-date, do: $ pm2 update. In memory PM2 version: 2.10.3. Local PM2 version: 3.1.2
10:00:47  * slajaxquit (Ping timeout: 240 seconds)
10:01:27  * Anthaasquit (Ping timeout: 268 seconds)
10:01:37  <mainnet>What the hell is "in-memory pm2" here?
10:02:32  * morenoh149joined
10:02:52  * Anthaasjoined
10:05:01  * Gazoooquit (Quit: The Lounge - https://thelounge.chat)
10:05:16  * omaralva_quit (Remote host closed the connection)
10:05:52  * omaralvaradolunajoined
10:06:35  * emma22joined
10:06:52  * omaralva_joined
10:07:12  * sozubaquit (Quit: bye bye)
10:07:19  <emma22>When throwing errors in node - what is the best practice ? I've been reading 'throw' vs 'throw Error' vs 'throw new Error'.
10:08:08  * Gazooojoined
10:08:18  * gliquit (Remote host closed the connection)
10:08:38  <joepie91>emma22: `throw new Error` is the correct one
10:08:43  * hussamquit (Quit: Connection closed for inactivity)
10:08:51  <joepie91>emma22: though I recommend using a library like `create-error` to create custom error types
10:09:04  * morenoh149quit (Ping timeout: 244 seconds)
10:09:09  <mainnet>secondly, how do I check if my node app is stateless?
10:09:09  <joepie91>because catch-alls are evil, and you'll need error types to distinguish between different failure modes :)
10:09:30  <joepie91>mainnet: what do you mean with "stateless", exactly? it's a word that has many definitions (some of them more reasonable than others)
10:10:13  * omaralvaradolunaquit (Ping timeout: 250 seconds)
10:10:21  <mainnet>joepie91, however this page https://pm2.io/doc/en/runtime/best-practices/stateless-application/ defines it. I
10:10:53  <emma22>joepie91: I am returning just an error message, do you think using that library is slightly overkill ?
10:10:55  <joepie91>that's a strangely specific definition, but depending on the context, not an unreasonable one
10:11:05  * omaralva_quit (Ping timeout: 250 seconds)
10:11:21  <joepie91>mainnet: so I *suspect* that the reason behind that definition of 'stateless' is so that pm2 can restart processes at any time without losing data
10:11:54  <joepie91>mainnet: the easiest way to 'test' it, insofar that is possible, is to just unceremoniously crash your process and let it be restarted, and see if anything breaks from the end user's perspective
10:12:01  <joepie91>mainnet: (what they're describing is really just crash-proofness)
10:12:13  * Venemoquit (Quit: Communi 3.5.0 - http://communi.github.com)
10:12:27  <cdunklau>this is also a good test to run for stateful applications :)
10:12:35  <mainnet>I'm trying to implement pm2 clustering and it says this "https://pm2.io/doc/en/runtime/guide/load-balancing/?utm_source=pm2&utm_medium=website&utm_campaign=rebranding#stateless-application" and yes that might be the case usualyy this cn be fixed by having a nosql databse backing the app up right?
10:12:42  <joepie91>cdunklau: that definition includes what people would normally call stateful applications
10:12:47  <joepie91>by shifting the burden to the DB
10:12:57  * sozubajoined
10:12:58  <joepie91>emma22: it's not; even if you just create a single error type (eg. because your code only has a single failure mode), it's worth it
10:13:01  <cdunklau>joepie91: besides the websocket part
10:13:12  * Notijoined
10:13:21  <joepie91>emma22: basically, higher-level code should be able to assess exactly how to deal with a failure, just from the error type alone
10:13:50  * carifquit (Ping timeout: 250 seconds)
10:14:01  <emma22>joepie91: Thank you
10:14:06  * emma22quit (Quit: Page closed)
10:14:09  <joepie91>mainnet: "NoSQL" doesn't belong in that sentence :) what you need is a database, and a) the correct database is *almost* always a relational one like PostgreSQL, and b) "NoSQL" Isn't a term with clear technical meaning, it's a buzzword
10:14:28  * morenoh149joined
10:14:37  <joepie91>mainnet: other than that, yes, the idea is that all state for your application should live in the DB
10:14:48  <joepie91>specifically for clustering that is because multiple requests from one user might end up in different processes
10:15:07  <joepie91>and those processes need to have the same 'view' of the application state
10:15:26  <joepie91>eg. for sessions that involves using express-session with connect-knex to store session data in the DB
10:16:28  <cdunklau>even with a db though, crash test your app :)
10:16:29  * apparitionjoined
10:16:32  <joepie91>yep
10:16:35  <cdunklau>like, probably not in prod, if you can help it
10:16:46  <joepie91>:)
10:16:56  <joepie91>or *especially* in prod...
10:16:59  * joepie91looks at the Chaos Monkey
10:17:04  <cdunklau>but there are probably lots of bugs that you can only find with a scream test :D
10:17:39  <MJCD>joepie91, I think its meaning is pretty clear haha
10:17:44  <MJCD>there's No SQL
10:17:47  <MJCD>;p
10:18:18  <joepie91>MJCD: that's the literal interpretation, but that's neither how it used nor what people think it means :)
10:18:24  <joepie91>it's*
10:18:47  <MJCD>are you calling me abnormal
10:18:49  <MJCD>:0
10:19:01  <joepie91>see eg. Cassandra which is frequently called "NoSQL" but which is *definitely* an SQL-like
10:19:10  <joepie91>in terms of query language
10:19:14  <cdunklau>dbm is best nosql, change my mind
10:19:22  <joepie91>dbm?
10:19:33  <cdunklau>joepie91: https://en.wikipedia.org/wiki/Dbm
10:19:37  <MJCD>joepie91, it still has no sql
10:19:42  <MJCD>even if sql-like
10:19:43  <MJCD>:P
10:19:54  <joepie91>cdunklau: oh, /that/ thing
10:19:56  <joepie91>lol
10:19:57  <cdunklau>yes :D
10:19:58  * Sharaal_quit
10:20:00  * ed209quit (Remote host closed the connection)
10:20:06  * ed209joined
10:20:13  * kpattich__joined
10:20:46  <cdunklau>jesus bdb is still being developed !?
10:20:58  <cdunklau>"18.1 (Core) / JE (7.5) / June 14, 2018; 7 months ago"
10:21:03  * morenoh149quit (Ping timeout: 246 seconds)
10:21:05  <joepie91>MJCD: then by that definition, PostgreSQL is NoSQL too :)
10:21:10  <joepie91>it violates the SQL standard in places, afaik
10:21:22  <MJCD>joepie91, nah its SomeSQL
10:21:24  <joepie91>cdunklau: not too long ago it was used as the backing store for bitcoin-core
10:21:24  <MJCD>;p
10:21:27  <MJCD>teheheh
10:21:34  <cdunklau>i just read that
10:21:37  <joepie91>I think it's replaced now though
10:21:37  * Sharaaljoined
10:22:26  * kpattich_quit (Ping timeout: 240 seconds)
10:22:29  * slajaxjoined
10:23:01  <mainnet>joepie91, Crystal Clear! Thanks a ton!
10:23:22  <mainnet>Did I start a SQL war by any chance?
10:23:36  <joepie91>hehe
10:23:39  * Gazoooquit (Ping timeout: 250 seconds)
10:23:41  <joepie91>nah
10:23:46  * omaralvaradolunajoined
10:23:48  <joepie91>it's relatively mild today :)
10:24:17  * rageshkrishnajoined
10:24:23  * Gazooojoined
10:25:35  <mainnet>joepie91, I got another question that keeps bugging me which I found litle to nil understanding of My pm2 keeps saying: In-memory PM2 is out-of-date, do: $ pm2 update. In memory PM2 version: 2.10.3. Local PM2 version: 3.1.2. What in thy name is "in-memory pm2 version"?!
10:26:10  * sozubaquit (Quit: bye bye)
10:26:25  * morenoh149joined
10:26:36  <joepie91>mainnet: I don't use pm2 so I can only really guess here, but I *suspect* that that's just the PM2 version that's currently running; it being a process manager, it probably keeps running even when all of your processes have stopped, so the version of PM2 that's running would be whatever version you had installed when it first started
10:26:45  * mazulaquit (Quit: Page closed)
10:26:50  * darkSeidquit (Read error: Connection reset by peer)
10:26:56  * slajaxquit (Ping timeout: 240 seconds)
10:27:13  * dylancolequit (Remote host closed the connection)
10:27:42  * paraxialquit (Ping timeout: 246 seconds)
10:27:48  * ffx__quit (Remote host closed the connection)
10:28:16  * omaralvaradolunaquit (Ping timeout: 264 seconds)
10:28:19  * darkSeidjoined
10:28:56  * mona_xjoined
10:29:01  * beowulfjoined
10:29:33  * paraxialjoined
10:29:35  * sozubajoined
10:30:27  * firedfoxquit (Remote host closed the connection)
10:30:38  * freetolquit (Ping timeout: 272 seconds)
10:30:41  * elichai2joined
10:31:13  * mezodjoined
10:31:21  * freetoljoined
10:32:28  * Sharaal_joined
10:32:31  * Sharaalquit (Read error: Connection reset by peer)
10:33:26  * carifjoined
10:33:36  * slajaxjoined
10:33:48  * morenoh149quit (Ping timeout: 272 seconds)
10:35:08  * rageshkrishnaquit
10:35:24  * tkorequit (Ping timeout: 246 seconds)
10:36:37  * sxajoined
10:37:51  * carifquit (Ping timeout: 246 seconds)
10:38:12  * slajaxquit (Ping timeout: 246 seconds)
10:38:23  * morenoh149joined
10:38:58  * mona_xquit (Quit: mona_x)
10:39:53  * plutoniixquit (Remote host closed the connection)
10:40:26  * slajaxjoined
10:41:04  * mona_xjoined
10:44:51  * slajaxquit (Ping timeout: 246 seconds)
10:45:03  * morenoh149quit (Ping timeout: 245 seconds)
10:45:15  * CoderForLifejoined
10:46:34  * omaralvaradolunajoined
10:47:36  * mona_xquit (Quit: mona_x)
10:48:34  * mona_xjoined
10:50:21  * morenoh149joined
10:50:26  * dylancolejoined
10:51:16  <DevAntoine>Hi
10:51:19  * omaralvaradolunaquit (Ping timeout: 268 seconds)
10:51:26  <DevAntoine>Why `pm2 status` doesn't show the port being used?
10:51:31  <mainnet>joepie91, Thanks, that make some sense. But, I don't get why does it have to fork two different mangers like that.
10:51:38  <mainnet>DevAntoine, try pm2 monit
10:51:48  <mainnet>DevAntoine, or just netstat -tulpn
10:52:33  * dylancolequit (Read error: Connection reset by peer)
10:53:02  <joepie91>mainnet: how do you mean?
10:53:12  * dylancolejoined
10:53:21  <DevAntoine>mainnet: netstat did the trick but I was sure in a previous project pm2 did print the prots
10:53:22  <DevAntoine>ports
10:54:04  * hemxjoined
10:55:56  * hemxpart
10:57:18  * morenoh149quit (Ping timeout: 252 seconds)
10:57:27  * ^lajoined
10:57:29  <mainnet>joepie91, as in one in-memory and the other plain old pm2 install
10:59:15  <joepie91>mainnet: what I'm saying is that one version is probably of the copy of pm2 that's currently running as a process, the other is the version of the pm2 that's currently installed on disk
10:59:22  <joepie91>ie. you just have an old PM2 process running
10:59:32  <joepie91>if you restart that somehow the problem will probably solve itself
11:01:40  * Notiquit (Remote host closed the connection)
11:02:04  * tkorejoined
11:02:17  * morenoh149joined
11:02:24  * sozubaquit (Quit: bye bye)
11:03:01  * carifjoined
11:06:33  * morenoh149quit (Ping timeout: 246 seconds)
11:07:17  * Venemojoined
11:08:03  * tkorequit (Ping timeout: 268 seconds)
11:11:33  * omaralvaradolunajoined
11:12:00  * jamesdrawneekjoined
11:12:00  * AtumTjoined
11:12:34  * omaralva_joined
11:16:16  * omaralvaradolunaquit (Ping timeout: 264 seconds)
11:16:21  * jamesdrawneekquit (Ping timeout: 246 seconds)
11:16:42  * carifquit (Ping timeout: 246 seconds)
11:17:27  * omaralva_quit (Ping timeout: 264 seconds)
11:23:10  * darkSeidquit (Remote host closed the connection)
11:23:46  * carifjoined
11:26:18  * promethjoined
11:26:40  * xaaaaaaquit (Quit: Page closed)
11:27:07  * darkSeidjoined
11:27:58  * kakashiALjoined
11:28:02  * dylancolequit (Remote host closed the connection)
11:31:18  * The_Lokojoined
11:32:42  * tkorejoined
11:32:43  * esrsequit (Ping timeout: 268 seconds)
11:33:28  * slajaxjoined
11:34:34  * mezodquit (Ping timeout: 268 seconds)
11:36:39  * marthinalquit (Remote host closed the connection)
11:37:58  * slajaxquit (Ping timeout: 245 seconds)
11:38:29  * marthinaljoined
11:38:54  * aem34ijoined
11:39:13  * nalkriquit (Ping timeout: 246 seconds)
11:40:45  * omaralvaradolunajoined
11:41:22  * asteelequit (Ping timeout: 268 seconds)
11:44:53  * omaralvaradolunaquit (Ping timeout: 250 seconds)
11:47:24  * sozubajoined
11:48:00  * kexdquit (Quit: kexd)
11:48:52  * kapil____quit (Quit: Connection closed for inactivity)
11:53:04  * carifquit (Ping timeout: 250 seconds)
11:55:28  * v01d4lph4joined
11:56:35  * mythjoined
11:57:00  * nalkrijoined
11:57:04  * darkSeidquit (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
11:59:57  * kexdjoined
12:00:12  * feelextrajoined
12:00:47  * Fischerfredljoined
12:02:28  * mythquit (Quit: Page closed)
12:03:46  * lmorchardquit (Ping timeout: 244 seconds)
12:04:37  * lmorchardjoined
12:05:11  * trevorjoined
12:08:37  * Nes173quit (Read error: Connection reset by peer)
12:11:02  * slajaxjoined
12:12:58  * tkorequit (Ping timeout: 245 seconds)
12:13:54  * userxquit (Quit: userx)
12:14:34  * mazulajoined
12:15:27  * slajaxquit (Ping timeout: 240 seconds)
12:15:42  <mazula>why the L is not removed? x) https://jsfiddle.net/L4arskgb/
12:16:08  <mazula>I missed something probably
12:16:26  * carifjoined
12:17:19  <cdunklau>mazula: because you're telling it to remove [^0-9A-Z]
12:17:45  <cdunklau>meaning characters other than [0-9A-Z]
12:20:10  * Globe_Bloaterpart ("Bye!")
12:22:27  * trevorquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
12:23:07  * AKPWDquit (Ping timeout: 240 seconds)
12:23:07  * ffx_joined
12:25:54  * slajaxjoined
12:26:32  * the_antquit (Ping timeout: 272 seconds)
12:28:06  * AKPWDjoined
12:30:28  * slajaxquit (Ping timeout: 245 seconds)
12:33:42  * gloomyjoined
12:35:26  * omaralvaradolunajoined
12:39:26  * omaralvaradolunaquit (Ping timeout: 240 seconds)
12:41:26  * carifquit (Ping timeout: 240 seconds)
12:41:49  * mazulaquit (Quit: Page closed)
12:44:05  * kexdquit (Quit: kexd)
12:53:26  * mona_xquit (Quit: mona_x)
12:54:22  * mezodjoined
12:54:40  * darkSeidjoined
12:55:02  * delxquit (Ping timeout: 250 seconds)
12:56:03  * dylancolejoined
12:56:10  * tsglovequit (Quit: Leaving)
13:00:18  * arunkumar413quit (Quit: Leaving)
13:00:36  * gloomyquit (Read error: Connection reset by peer)
13:01:33  * gloomyjoined
13:03:03  * ahmed_elgabrijoined
13:05:13  * ahmedelgabriquit (Ping timeout: 268 seconds)
13:06:52  * delxjoined
13:08:13  * gloomyquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
13:09:55  * keepLearning512quit (Remote host closed the connection)
13:11:20  * carifjoined
13:13:25  * jamesdrawneekjoined
13:14:55  * mfolivasquit (Remote host closed the connection)
13:15:44  * gloomyjoined
13:15:59  * powerbitquit (Read error: Connection reset by peer)
13:16:03  * slajaxjoined
13:17:51  * jamesdrawneekquit (Ping timeout: 250 seconds)
13:23:03  * slajaxquit (Ping timeout: 250 seconds)
13:24:06  * keepLearning512joined
13:25:31  <mainnet>joepie91, got it, turns out, your guess was right!
13:25:39  * chargen_joined
13:25:59  * tkorejoined
13:26:57  * chargenquit (Ping timeout: 244 seconds)
13:27:00  <mainnet>How would you differentiate between a pm2 app with clsutering implemented and the one which doesn't?
13:28:28  * trevorjoined
13:28:56  * keepLearning512quit (Ping timeout: 240 seconds)
13:29:28  * carifquit (Ping timeout: 246 seconds)
13:30:57  * chargenjoined
13:31:07  * tkorequit (Ping timeout: 268 seconds)
13:32:08  * chargen_quit (Ping timeout: 245 seconds)
13:34:14  * Arcaelyxquit (Quit: Textual IRC Client: www.textualapp.com)
13:41:20  * antsmartianjoined
13:42:19  * tsglovejoined
13:42:50  * tkorejoined
13:43:58  * keepLearning512joined
13:43:59  * Roughyjoined
13:45:05  * carifjoined
13:46:19  * chargen_joined
13:46:36  <ThePendulum>are there any IP geolocation apis/saasages you could recommend?
13:47:11  * DeltaHeavyjoined
13:47:28  * chargenquit (Ping timeout: 250 seconds)
13:50:28  * chargen_quit (Ping timeout: 246 seconds)
13:51:25  * marthinalquit (Remote host closed the connection)
13:54:44  * carifquit (Ping timeout: 252 seconds)
13:56:59  * chargen_joined
13:58:05  * akkonradjoined
13:58:41  * kjartanquit (Read error: Connection reset by peer)
14:00:01  * chargenjoined
14:00:11  * ffx_quit (Read error: Connection reset by peer)
14:00:19  * asteelejoined
14:01:12  * chargen_quit (Ping timeout: 246 seconds)
14:01:14  * sulaimanjoined
14:02:06  * ffx_joined
14:02:39  * sulaimanpart
14:02:54  * dylancolequit (Remote host closed the connection)
14:03:47  * kjartanjoined
14:08:56  * X-51joined
14:08:59  * edrocksjoined
14:10:14  * carifjoined
14:11:18  * iffraffjoined
14:12:19  * iffraff2joined
14:13:09  * Jetimonquit (Read error: Connection reset by peer)
14:14:04  * sternsjoined
14:14:48  * jamesdrawneekjoined
14:16:23  * Jetimonjoined
14:16:33  * ibtjwjoined
14:16:35  * apparitionquit (Quit: Bye)
14:19:10  * jamesdrawneekquit (Ping timeout: 246 seconds)
14:20:35  * duderonomyquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
14:20:59  * svennidaljoined
14:21:52  * omaralvaradolunajoined
14:22:08  * carifquit (Ping timeout: 250 seconds)
14:24:14  * marthinaljoined
14:24:28  * marthinalquit (Remote host closed the connection)
14:24:47  * akkonradquit (Quit: Ex-Chat)
14:24:50  * eclmjoined
14:25:06  <MJCD>ThePendulum, there's free data-tables for rough geolocation or were you after a paid service?
14:25:16  <MJCD>If the latter; google would surely reign supreme
14:26:26  * jwestquit (Quit: WeeChat 1.6)
14:26:26  * omaralvaradolunaquit (Ping timeout: 240 seconds)
14:26:28  <joepie91>ThePendulum: what's your usecase? IP geolocation is generally extremely unreliable
14:26:46  <MJCD>well the paid providers have some nifty tricks
14:26:53  * Notijoined
14:26:59  <MJCD>I mean, it still identifies me as being in sydney where the fibre ends
14:27:08  <MJCD>but atleast it knows i'm aussie
14:27:38  * mezodquit (Remote host closed the connection)
14:28:23  * mainnetquit (Ping timeout: 245 seconds)
14:28:31  * deviantferojoined
14:29:23  <joepie91>shrug, the tricks aren't that nifty :P and IPs just aren't granular enough for useful geolocation
14:29:32  <MJCD>well
14:29:35  <MJCD>they areeeee
14:29:37  <joepie91>several ISPs in NL for example use a single IP pool for literally the entire country
14:29:41  <MJCD>because they're sold in blocks
14:29:50  <MJCD>the granularity of your dataset is what differs
14:29:56  <joepie91>MJCD: IPs aren'
14:29:58  <joepie91>oops
14:30:03  <joepie91>MJCD: IPs aren't dedicated to specific customers *
14:30:15  <MJCD>to specific ISP's they are
14:30:18  <MJCD>they buy a block
14:30:22  <MJCD>well, they did
14:30:23  <joepie91>they're taken dynamically from pools in most cases, which means the geographic location of a user behind a given IP can change overnight to the other side of the country
14:30:29  <MJCD>now they're all taken lol
14:30:32  <joepie91>MJCD: yes, for some ISPs they are
14:30:41  <joepie91>that doesn't make it useful as a general strategy :P
14:30:43  <MJCD>and yeah they are pooled
14:30:50  <MJCD>but within the isp
14:31:05  <ThePendulum>I think a rough estimation of the country is good enough
14:31:17  <MJCD>so you might have any ip but generally the isp will have SOME concept of what blocks for what regions
14:31:23  * jwestjoined
14:31:27  <joepie91>MJCD: my point is that that isn't generally true at all
14:31:29  <joepie91>yes, some ISPs do
14:31:31  <joepie91>some ISPs don't
14:31:39  <ThePendulum>but if it says "hey that's jerry from finnicky street 16 he's an alcoholic" that's fine too
14:31:47  <joepie91>in practice that means that *at best* geolocation will give you the right country reliably
14:31:50  <MJCD>dynamic ip's are regular, but you don't see how that works
14:32:00  <MJCD>like how they've configured that
14:32:04  <MJCD>so you would never know
14:32:08  <joepie91>MJCD: I've spoken to actual network engineers at actual ISPs about this :P
14:32:27  <joepie91>ThePendulum: if you just need country, look up the IP range in the registry whois
14:32:39  <joepie91>and see what country the ISP is in
14:32:44  <joepie91>that's generally gonna be good enough
14:33:01  <joepie91>IP blocks are rarely shared across countries, pretty much only for satellite internet and specific roaming ranges
14:33:23  <MJCD>i've used this before and we found it pretty good
14:33:24  <MJCD>https://dev.maxmind.com/geoip/geoip2/geolite2/
14:33:30  <MJCD>as I say tho, google is king
14:33:44  <MJCD>they have geoip locations of wifi ap's even
14:33:51  <joepie91>Google doesn't actually have very accurate geolocation in practice :P
14:34:02  <joepie91>(IP-based anyway)
14:34:03  <MJCD>better than most
14:34:07  <joepie91>Maxmind is still the #1 source for real-world deployments that just go off IP
14:34:19  <MJCD>yeah i'd agree
14:34:53  <MJCD>but it does rely heavily on those range chunks registration data being accurate
14:34:57  <MJCD>which largely means manhours
14:35:01  <MJCD>thus the paid product
14:35:09  <joepie91>Maxmind quite often conflicts with the range reg actually
14:35:16  <MJCD>haha yeah?
14:35:20  <joepie91>it's mostly the other geo-IP databases that go off registries
14:35:23  <joepie91>yeah
14:35:28  <MJCD>that's odd
14:35:34  <MJCD>i've never run > 1 at a time
14:35:35  <joepie91>(friend of mine runs http://ip-api.com/)
14:35:40  <MJCD>ah yeah
14:35:41  <joepie91>(which uses maxmind)
14:35:45  <MJCD>I saw them in the results
14:35:57  * mezodjoined
14:36:32  <joepie91>but yeah it's all basically guesswork
14:36:54  <MJCD>what's an informed guess called
14:36:54  * carifjoined
14:36:58  <joepie91>guesstimate?
14:37:18  <cdunklau>MJCD: "the truth" in many circles
14:37:36  * Venemoquit (Ping timeout: 246 seconds)
14:38:22  <MJCD>cdunklau, what is this truth
14:39:40  <joepie91>welp https://www.openwall.com/lists/oss-security/2019/02/11/2
14:40:15  <cdunklau>MJCD: there is no truth, there is only pain and dispair. Accept Sithrak!
14:40:38  <joepie91>seems Docker has a root exec vuln
14:40:45  <joepie91>and systemd surprisingly... doesn't?
14:41:12  <MJCD>lol
14:41:18  <MJCD>docker is trash anyway
14:41:18  <joepie91>"The vulnerability allows a malicious container to (with minimal user interaction) overwrite the host runc binary and thus gain root-level code execution on the host."
14:41:33  <joepie91>Docker is not for secure isolation, chapter 498257
14:41:39  <MJCD>definitely
14:41:41  <MJCD>lol
14:42:03  * plasticlequit (Quit: WeeChat 2.3)
14:42:19  * brinyjoined
14:42:37  * plasticlejoined
14:42:37  * X-51quit (Ping timeout: 246 seconds)
14:43:09  <MJCD>honestly like, you can make vm's so thin
14:43:22  <MJCD>there's basically no use case where containerization is helpful
14:43:25  <MJCD>let alone desirable
14:43:53  * plasticlequit (Client Quit)
14:44:21  * plasticlejoined
14:44:22  <MJCD>even ubuntu-cloud instances under a hypervisor
14:44:44  <MJCD>easy to set up, all vm's nested arbitrarily deep run in parallel
14:48:33  * Jervis_joined
14:48:38  <prometh>@ljharb: how do you feel about using native web components instead of react? browser support aside...
14:49:07  * lexileoquit (Ping timeout: 240 seconds)
14:50:21  * carifquit (Ping timeout: 250 seconds)
14:51:44  * gloomyquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
14:51:45  * dracosnakejoined
14:52:14  * schneid3306joined
14:52:20  * kerrangjoined
14:53:46  * dracosnakequit (Client Quit)
14:54:20  * gamelasterjoined
14:55:01  * dracosnakejoined
14:55:09  * pmuriasjoined
14:55:31  * gloomyjoined
14:55:35  * gloomyquit (Client Quit)
14:57:10  * trevorquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
14:58:33  * gloomyjoined
15:00:22  * marthinaljoined
15:00:36  * kpattich_joined
15:00:49  * hphs^quit
15:01:55  * trevorjoined
15:02:12  * gloomyquit (Client Quit)
15:02:51  * htoc^joined
15:03:07  * kpattich__quit (Ping timeout: 240 seconds)
15:05:40  * X-51joined
15:05:51  * carifjoined
15:07:18  * bokyquit (Read error: Connection reset by peer)
15:08:16  * gloomyjoined
15:10:28  * bokyjoined
15:10:28  * bokyquit (Changing host)
15:10:28  * bokyjoined
15:10:46  * wsierocijoined
15:10:56  * CrazyTux[m]joined
15:12:45  * zsocjoined
15:13:54  * sgenjoined
15:15:11  * enoqquit (Quit: enoq)
15:15:13  * hemstockquit (Read error: Connection reset by peer)
15:15:26  * led_dark_1joined
15:17:16  * hemstockjoined
15:17:38  * dlwickselljoined
15:17:48  * schneid3306quit (Quit: ZZZzzz…)
15:20:03  * carifquit (Ping timeout: 245 seconds)
15:20:09  <cdunklau>MJCD: it's removing global state from a process environment, i think it's pretty sweet
15:20:29  <cdunklau>MJCD: https://glyph.twistedmatrix.com/2016/10/what-am-container.html
15:21:07  * slajaxjoined
15:22:57  <joepie91>cdunklau: what really annoys me about that view of containers is that a) people regularly conflate process isolation and dependency isolation, and b) they tend to overlook the *costs* of process isolation
15:23:24  <joepie91>it's a very ungranular way to look at isolation
15:23:54  <joepie91>regarding point A, the key insight being that you don't actually need containers for dependency isolation, and that there are much cheaper ways to accomplish that...
15:24:10  * wsierociquit (Remote host closed the connection)
15:24:28  <joepie91>ranging from statically compiled binaries to application-specific prefixes to Nix-esque architectures, depending on what guarantees and niceties you want
15:24:28  * wsierocijoined
15:25:08  <joepie91>if you actually want *process* isolation, then sure, containers can be greatly useful, buuuuuut that process isolation means you do actually get *process isolation* which also makes things like IPC a whole lot more difficult to do securely
15:25:19  * trevorquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
15:25:22  <joepie91>because, well, you're isolating your processes, and that's usually not actually what you want
15:26:26  * d10n-workjoined
15:26:45  <joepie91>hence my annoyance with people shoving everything into Docker without understanding the tradeoffs involved, and then rolling in here with "but why does tool X not fit into my workflow?!??!!"
15:27:07  * bluezonejoined
15:27:22  * trevorjoined
15:27:30  <joepie91>so... container tech is interesting, has been interesting for a long time (and contrary to popular belief FAR predates Docker), but it's a tool to be used *where appropriate*, not blindly for everything everywhere
15:29:06  * wsierociquit (Ping timeout: 252 seconds)
15:30:13  * setpillquit (Quit: o/)
15:31:48  * carifjoined
15:31:59  * trevorquit (Client Quit)
15:31:59  * v01d4lph4quit (Ping timeout: 268 seconds)
15:32:55  <ThePendulum>I have noticed that when trying to understand what docker is useful for, a lot of people say "well it's how you do it these days, isn't it?"
15:33:01  <ThePendulum>well that's what I'm sort of asking
15:33:04  * craigojoined
15:33:21  <cdunklau>joepie91: i think you should read that article
15:33:34  * plasticlequit (Remote host closed the connection)
15:34:52  * plasticlejoined
15:35:16  <joepie91>cdunklau: I've skimmed it, and it does not seem to deviate from my current understanding of containers :)
15:35:36  * mona_xjoined
15:35:51  <joepie91>cdunklau: like take for example this excerpt
15:35:56  <joepie91>"When one builds an image, one is building a picture of the entire filesystem that the container will see, so an image is a complete artifact. By contrast, a package for a Linux package manager is just a fragment of a program, leaving out all of its dependencies, to be integrated later. If an image runs on your machine, it will (except in some extremely unusual circumstances) run on the target machine, because everything it needs to run is fully
15:35:57  <joepie91>included."
15:36:12  <joepie91>this is 100% a perfect example of the "conflating dependency isolation with process isolation" thing I mentioned, and you don't actually need containers for this
15:36:14  * craigo_joined
15:36:29  * craigo_quit (Remote host closed the connection)
15:36:34  <joepie91>even the lowest tier of non-container approaches, static builds, provides this benefit
15:36:39  * darkSeidquit (Quit: Textual IRC Client: www.textualapp.com)
15:37:03  * craigo_joined
15:37:15  * craigoquit (Read error: Connection reset by peer)
15:38:10  <joepie91>(there's also a few other misc errors in there, but I don't really feel like spamming an extensive literature review into the channel)
15:39:35  * dlwicksellquit (Quit: Leaving.)
15:40:40  * munsterbergjoined
15:41:14  * craigojoined
15:41:14  * craigo_quit (Read error: Connection reset by peer)
15:41:43  * Venemojoined
15:48:04  * carifquit (Ping timeout: 246 seconds)
15:49:28  * ZeroWalkerquit (Quit: Leaving)
15:50:28  * aem34iquit (Ping timeout: 245 seconds)
15:52:56  * slajaxquit (Ping timeout: 240 seconds)
15:53:46  * spacesuitdiverjoined
15:55:14  * Lukejoined
15:55:37  * trevorjoined
15:57:12  * tkorequit (Ping timeout: 252 seconds)
16:00:18  * hyperiscojoined
16:01:48  * craigoquit (Remote host closed the connection)
16:02:53  * aem34ijoined
16:05:28  * amarashovquit (Ping timeout: 245 seconds)
16:07:01  <cdunklau>joepie91: i think the intention there was less about the deps and more about the filesystem itself
16:07:09  * aem34iquit (Client Quit)
16:07:27  <cdunklau>the deps thing is a bonus, not the main thing glyph is talking about
16:07:36  <joepie91>cdunklau: yes, that is the problem :) dependencies and persistent state are two fundamentally different things
16:08:02  <joepie91>(and isolated persistent state *also* does not require containers...)
16:08:33  <joepie91>this is basically just an instance of people judging a technology by "what benefits does it give me over what I'm used to"
16:08:38  <joepie91>er, whoops, hit enter too soon
16:08:46  * tkorejoined
16:09:07  <joepie91>this is basically just an instance of people judging a technology by "what benefits does it give me over what I'm used to", rather than by the more correct metric of "what benefits does it give me over the next best option, and is it worth the extra cost" &
16:09:13  <joepie91>*
16:09:42  <joepie91>which is also part of the reason people ascribe magical properties to JWTs and MongoDB and blockchains and many other overhyped things
16:10:45  <joepie91>(nearly every benefit that people ascribe to blockchains, for example, is not actually a feature of blockchains; it's a feature of a *lot* of things, they've just never used those things and therefore believe it's unique to blockchains)
16:11:04  <joepie91>(yet there are much cheaper, more reliable solutions that give you those same benefits...)
16:12:43  * rmarkinsquit (Remote host closed the connection)
16:13:22  * rmarkinsjoined
16:13:34  * sillysluxjoined
16:14:00  * groomquit (Quit: Leaving.)
16:16:11  * jamesdrawneekjoined
16:16:42  * omaralvaradolunajoined
16:17:14  * asigjoined
16:17:36  * carifjoined
16:18:44  * kpattich__joined
16:19:10  * mmmveggies_joined
16:20:05  * iam730quit (Ping timeout: 268 seconds)
16:20:28  * jamesdrawneekquit (Ping timeout: 245 seconds)
16:20:52  * kpattich_quit (Ping timeout: 250 seconds)
16:21:32  * mmmveggies_part
16:23:50  <cdunklau>hmmmm
16:24:24  <cdunklau>joepie91: how about the last section, starting with So, where does that leave you, my dear reader?
16:24:55  * FunnyLookinHatjoined
16:25:03  <joepie91>cdunklau: well, it's a wrong conclusion :)
16:25:09  <joepie91>for a varying set of reasons
16:25:38  <cdunklau>specifically i mean the four points
16:25:47  <joepie91>aforementioned conflation of dependency isolation and process isolation, but also eg. the "test exactly what you're deploying" claim, which is a popular but false belief; Docker environments are not actually perfectly reproducible because they rely on the host kernel and architecture
16:26:26  <joepie91>it's unclear where the performance claim comes from, but I see no reason why running something in a container would be faster than outside of it
16:26:42  <joepie91>eg. if resource limits or prioritization are the concern, you can do that directly with systemd without a container
16:26:54  <joepie91>(see service accounting)
16:27:08  * gamelasterquit (Ping timeout: 245 seconds)
16:27:20  <joepie91>calling out required resources is a dependency problem, so see above
16:27:49  <joepie91>calling out shared state can be potentially valuable, but Docker (and this style of containers in general) is not granular enough to do that and actually get the full value from that; you want to look into things like object capability based systems instead for that
16:28:01  * jlippsjoined
16:28:10  <joepie91>(you're not actually marking shared state with Docker; you're just marking dependencies on systems *in which the shared state exists*)
16:28:25  <joepie91>(which, again, is a property provided by many orchestration tools)
16:28:36  * renlojoined
16:28:49  * kyanjoined
16:29:05  * jlippsquit (Client Quit)
16:29:08  <joepie91>as for complete build pipelines: again, dependency isolation, can be done with static binaries and application prefixes in literal tarballs and Nix and whatnot
16:29:18  <joepie91>as far as I'm concerned, none of these are compelling points
16:29:27  <joepie91>compared to other solutions that exist
16:29:32  * gambl0r3joined
16:29:33  * dracosnakequit (Quit: leaving)
16:29:48  <joepie91>and the conclusion is _entirely missing_ the bit about what cost you pay for it
16:30:25  * orbyt_joined
16:31:20  <joepie91>essentially... this section tells me nothing new, they're all inaccurate (or outright wrong) claims that I've heard before :)
16:31:35  * kyanquit (Excess Flood)
16:31:56  * Venemoquit (Quit: Communi 3.5.0 - http://communi.github.com)
16:32:01  <joepie91>cdunklau: more about object capabilities here: http://joeduffyblog.com/2015/11/10/objects-as-secure-capabilities/
16:32:18  <joepie91>(not currently adopted in any major operating systems, mind)
16:33:26  * renloquit (Ping timeout: 250 seconds)
16:33:58  <cdunklau>joepie91: sounds like you'd be into Monte
16:34:33  <joepie91>I am aware of its existence :)
16:35:37  * kipukunquit (Quit: FUCK)
16:36:10  <cdunklau>joepie91: thanks for your review :)
16:37:41  * deviantferoquit (Quit: WeeChat 2.3)
16:37:52  * deviantferojoined
16:37:54  * kipukunjoined
16:38:14  * ircuser-1joined
16:38:21  <joepie91>cdunklau: (incidentally, one of the Monte developers is a NixOS regular :P)
16:38:23  <joepie91>and np
16:38:32  <joepie91>well, at least one*
16:38:50  <MJCD>we can join the channel and succ them gently
16:39:22  * dastierjoined
16:39:36  * dastierquit (Remote host closed the connection)
16:39:58  * dastierjoined
16:40:01  * kipukunquit (Client Quit)
16:40:34  * kipukunjoined
16:40:47  * kipukunquit (Client Quit)
16:41:13  * dsiypl4_joined
16:42:21  * jlippsjoined
16:42:43  * mat001joined
16:42:54  * carifquit (Ping timeout: 268 seconds)
16:43:06  * kipukunjoined
16:44:59  <gajus>Did anyone use/ experiment with Deno?
16:45:04  <gajus>any experiences to shares?
16:45:05  <gajus>share*
16:45:13  <gajus>https://github.com/denoland/deno
16:45:52  * kipukunquit (Client Quit)
16:46:25  <joepie91>I'm rather unimpressed with it tbh
16:46:47  <joepie91>very very limited sandboxing model, import from URLs which is a /terrible/ idea, and too much focus on typescript...
16:46:50  * kipukunjoined
16:47:24  * antsmartianquit (Remote host closed the connection)
16:47:29  * trevorquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
16:47:58  * Jetimonquit (Ping timeout: 245 seconds)
16:48:06  * akkonradjoined
16:48:27  * akkonradquit (Client Quit)
16:48:30  * orbyt_quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
16:48:53  <joepie91>I feel like it gets a lot more attention than it warrants, given the relatively minor benefits it provides, the large compatibility break, and the total absence of more comprehensive benefits that it *could* have had given a compatibility break
16:49:14  <kakashiAL>I have datastructures like this:
16:49:15  <kakashiAL>https://repl.it/repls/LastingRubberyLanguage
16:49:31  <cdunklau>joepie91: does it actually import from urls, or is it like xml namespace shit
16:49:39  <joepie91>cdunklau: it actually imports from URLs
16:49:44  <cdunklau>ewwwwwwww
16:49:45  <joepie91>download-and-freeze-on-first-use
16:49:49  <cdunklau>lol
16:49:57  <kakashiAL>I dont know an efficent and short way to tell the server when and what to write in the database and when to delete
16:50:03  <cdunklau>TOFU is not really a good trust model for fucking executable code :D
16:50:20  <kakashiAL>I have just a solution that is very complex with multiple steps and rechecks
16:50:33  <kakashiAL>well, its not easy to read
16:50:35  <gajus>joepie91: I mean... NPM downloads from URLs. I don't see your point.
16:50:37  <joepie91>I've also seen a lot of people go "but you can sandbox things!" when as far as I can tell, all it does is provide a binary Y/N flag for network and disk access
16:51:31  <gajus>well, that binary flag does not exist in Node.js
16:51:36  <gajus>(would be extremely useful by the way)
16:51:51  * edrocksquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
16:52:01  <joepie91>gajus: so there's a few problems here: 1) lack of dependency metadata not only hampers third-party tooling, but also means that you cannot effectively lock dependencies without literally vendoring them into your repo/project, 2) URLs are nowhere *near* stable identifiers for dependencies, which is why you want an authorative registry that can map names to locations, with certain immutability guarantees
16:52:15  <joepie91>URLs die, they can be arbitrarily mutated
16:52:40  <joepie91>gajus: I am aware that it does not exist in Node.js; I'm saying that its usefulness is incredibly limited and doesn't warrant the "secure" label that people are affixing to deno as a result
16:52:43  <gajus>joepie91: Okay. All these arguments VS a single point of failure that NPM is.
16:53:00  * edrocksjoined
16:53:06  <gajus>Either way, I am being devil's advocate.
16:53:06  <joepie91>gajus: yes, NPM is a single point of failure. importing from URLs means you have LOTS of single points of failure.
16:53:09  <gajus>I hate the URL approach.
16:53:11  <joepie91>which is worse than one :)
16:53:41  <joepie91>I'm all for replacing npm specifically, by the way
16:53:44  <joepie91>just not with imports from URLs
16:53:48  <gajus>I do like the intention behind the URLs, i.e. decentralising the packages.
16:53:54  <joepie91>there's a very good reason why we have registries
16:53:56  <gajus>Just not the .. yeah what you said.
16:53:59  * gloomyquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
16:54:27  <joepie91>that's probably what frustrates me most about deno; it was a good opportunity to really, truly fix a lot of problems that are never going to be fixable in regular Node.js
16:54:29  <gajus>By the way, you've totally snubbed my request for feedback on Slonik. :-)
16:54:31  <joepie91>and instead we get these half-baked solutions
16:54:38  * edrocksquit (Client Quit)
16:54:50  <joepie91>that are either barely better or significantly worse :|
16:54:58  <joepie91>gajus: I probably missed it
16:55:05  <gajus>https://github.com/gajus/slonik
16:55:08  <gajus>https://medium.com/@gajus/processing-large-volumes-of-data-safely-and-fast-using-node-js-and-postgresql-6aa62392cadb
16:55:11  <gajus>What do you think?
16:55:17  <gajus>Assuming that you use PostgreSQL.
16:55:18  * Lukequit (Quit: sleep)
16:55:35  <joepie91>oh, that's quite lengthy, I will have to look at that some later time :P
16:55:37  <joepie91>(I do use pg)
16:55:55  * jlippsquit (Quit: My comp has gone to sleep. ZZZzzz…)
16:56:29  * mazulajoined
16:57:06  <kakashiAL>I added these new datastructures in my solution, but is there maybe a smarter way?
16:57:08  <kakashiAL>https://repl.it/repls/ThoseLemonchiffonStatistic
16:57:18  * mat001quit (Remote host closed the connection)
16:57:43  * carifjoined
16:58:04  * dsiypl4__joined
16:58:09  <gajus>kakashiAL: are you reinventing access control system?
16:58:12  <mazula>what is the equivalent of this? I tried () but it doesn"t work https://gist.github.com/kindles/9d4ffbec9d1a86640735e639ed1ed0d0
16:58:29  <kakashiAL>gajus: nope
16:59:06  <kakashiAL>I try to implement a role update function that know when and what to update the roles of a user and when to delete
16:59:18  <kakashiAL>but in an efficent way, my solution is a bit "dirty"
16:59:43  <gajus>the code snippet that you've shared doesn't say much
16:59:48  <gajus>mazula: equivalent in what
17:00:16  * plexigrasjoined
17:00:18  * nalkriquit (Ping timeout: 250 seconds)
17:00:30  * pmuriasquit (Remote host closed the connection)
17:01:00  <kakashiAL>gajus: in my logic, I update rolesToAdd and rolesToDelete depending what roles a user already has
17:01:10  * dsiypl4_quit (Ping timeout: 250 seconds)
17:02:56  * sgenquit (Ping timeout: 240 seconds)
17:03:08  <mazula>https://gist.github.com/kindles/9d4ffbec9d1a86640735e639ed1ed0d0 not equal it's weird
17:03:14  <mazula>gajus
17:04:12  <gajus>you have [Function] on the left hand-side and just Function on the right
17:04:23  * ^laquit (Quit: The Lounge - https://thelounge.chat)
17:04:30  * shinzoquit (Quit: leaving)
17:04:36  <gajus>assuming that you are asking what is the reason left hand-side is not deep equal to right hand-side
17:04:42  * ^lajoined
17:04:57  <mazula>if I put [Function] it's not equal
17:05:03  * ahmed_elgabriquit (Ping timeout: 245 seconds)
17:05:56  * carifquit (Ping timeout: 250 seconds)
17:06:26  * remyojoined
17:06:35  <mazula>if I use console.log() on my expected result I have [Function: Function]
17:07:07  <mazula>so I retrieve [Function] and I expect [Function: Function]
17:07:09  <mazula>hmm
17:07:12  <mazula>how to solve that x)
17:11:07  * mezodquit (Remote host closed the connection)
17:12:18  * macwinnerjoined
17:13:02  * mezodjoined
17:14:27  * chargenquit (Ping timeout: 240 seconds)
17:15:02  * mezodquit (Remote host closed the connection)
17:15:04  * Venemojoined
17:15:04  <SGrover>mazula, I'm late to the conversation.. but if I see [Function] versus just Function, I'm thinking that I have an array of functions... is that the case here?
17:15:12  * chargenjoined
17:16:13  * tlentjoined
17:17:04  <mazula>doesn't work if I put the function int oan array :'(
17:17:08  <mazula>not equal
17:17:27  * kpattich__quit (Ping timeout: 240 seconds)
17:17:41  * The_Lokoquit (Remote host closed the connection)
17:19:23  * Fischerfredlpart ("WeeChat 2.3")
17:19:27  * chargenquit (Ping timeout: 244 seconds)
17:19:37  * orbyt_joined
17:20:02  * hussamjoined
17:20:21  * trevorjoined
17:20:27  * carifjoined
17:20:32  * asteele_joined
17:20:44  * RoriconKnightjoined
17:20:46  * chargenjoined
17:21:35  * Dbuggerjoined
17:21:55  * renn0xtk9joined
17:21:56  * tkorequit (Ping timeout: 240 seconds)
17:22:07  * asteelequit (Ping timeout: 240 seconds)
17:22:32  * chargen_joined
17:24:13  * keepLearning512quit (Remote host closed the connection)
17:24:24  * RoriconKnightquit (Remote host closed the connection)
17:24:58  * keepLearning512joined
17:25:27  * chargenquit (Ping timeout: 268 seconds)
17:25:34  * renlojoined
17:26:05  <^la>is there an interactive node shell version like iPython?
17:26:15  <^la>with autocompletion and helpers
17:26:49  * gloomyjoined
17:27:39  * mat001joined
17:28:03  * orbyt_quit (Ping timeout: 246 seconds)
17:28:49  * v01d4lph4joined
17:29:48  * carifquit (Ping timeout: 246 seconds)
17:29:51  * mat001_joined
17:29:54  * gloomy_joined
17:30:58  * tlentquit (Remote host closed the connection)
17:31:30  * gloomyquit (Ping timeout: 250 seconds)
17:31:35  * v01d4lph4quit (Read error: Connection reset by peer)
17:31:43  * mat001quit (Ping timeout: 245 seconds)
17:32:03  * v01d4lph4joined
17:32:09  <mazula>any idea?
17:32:24  * asteele_changed nick to asteele
17:33:44  * gloomy_quit (Client Quit)
17:34:01  * orbyt_joined
17:34:32  * mat001_quit (Ping timeout: 250 seconds)
17:36:07  <GreenJello>^la, a slightly better repl https://github.com/nodejs/repl also, jupyter has a JS option, and there are live feedback in editors, e.g. https://marketplace.visualstudio.com/items?itemName=WallabyJs.quokka-vscode
17:36:30  * feelextraquit (Ping timeout: 244 seconds)
17:37:01  <GreenJello>^la, I don't recall exactly what features ipython has that the default repl doesn't
17:38:48  * mat001joined
17:38:56  * gambl0r3quit (Ping timeout: 268 seconds)
17:40:04  * edrocksjoined
17:41:04  * unlink_joined
17:41:14  * edrocksquit (Client Quit)
17:41:16  * dylancolejoined
17:41:54  * unlink2quit (Ping timeout: 250 seconds)
17:45:07  * carifjoined
17:45:33  * mazulaquit (Ping timeout: 256 seconds)
17:45:36  * iam730joined
17:45:58  * iclonquit (Remote host closed the connection)
17:46:12  * Booster2oooquit (Read error: Connection reset by peer)
17:47:41  * iclonjoined
17:47:54  * Laptop_minijoined
17:49:15  * omaralvaradolunaquit (Remote host closed the connection)
17:49:52  * omaralvaradolunajoined
17:50:37  <GrandMoffTarkin>in this example how can i make sure a and b are new objects of text, instead of refereing to the same ? https://jsfiddle.net/allaroundcreative/8voqx3tL/2/
17:50:45  * slajaxjoined
17:54:21  * omaralvaradolunaquit (Ping timeout: 268 seconds)
17:55:16  * fas3r_joined
17:55:47  * mat001quit (Remote host closed the connection)
17:55:49  * gloomyjoined
17:56:14  * fas3r_quit (Client Quit)
17:56:37  * fas3rjoined
17:57:24  * mat001joined
17:58:15  * xrashjoined
17:58:16  * carifquit (Ping timeout: 246 seconds)
17:58:35  * mat001quit (Remote host closed the connection)
17:59:21  * mona_xquit (Quit: mona_x)
17:59:23  <jjrabbit>hello
17:59:42  <GrandMoffTarkin>hi jjrabbit
17:59:44  * mat001joined
17:59:45  <jjrabbit>when people say to store keys as environment variables are they talking about storing them in another file?
18:00:01  <jjrabbit>(in something other than your server.js) ?
18:00:06  * mona_xjoined
18:00:14  * EREVANjoined
18:00:23  <GrandMoffTarkin>you would use a .env file
18:00:28  * julianduquequit (Ping timeout: 245 seconds)
18:00:32  <GrandMoffTarkin>https://www.npmjs.com/package/dotenv
18:00:55  * omaralvaradolunajoined
18:01:46  <jjrabbit>GrandMoffTarkin: thanks, is the reasoning for this because .env never gets pushed to a repository?
18:02:47  <GrandMoffTarkin>jjrabbit im not sure probably
18:02:48  * morenoh149joined
18:03:04  <GrandMoffTarkin>that does make sense though
18:03:22  * lmorchardquit (Ping timeout: 244 seconds)
18:03:48  * lmorchardjoined
18:06:41  * edrocksjoined
18:07:24  * mrhelpmannquit (Ping timeout: 252 seconds)
18:07:54  * duderonomyjoined
18:09:43  * Notiquit (Quit: Konversation terminated!)
18:11:25  * kjartanquit (Read error: Connection reset by peer)
18:13:35  * carifjoined
18:14:14  * GrandMoffTarkinquit
18:15:05  * kjartanjoined
18:15:11  * dlwickselljoined
18:17:35  * jamesdrawneekjoined
18:19:27  * Booster2ooojoined
18:19:29  * dylancolequit (Remote host closed the connection)
18:19:54  * wsierocijoined
18:21:43  * jamesdrawneekquit (Ping timeout: 246 seconds)
18:22:19  * svennidalquit (Quit: WeeChat 2.3)
18:23:07  * slajaxquit (Ping timeout: 240 seconds)
18:23:27  * carifquit (Ping timeout: 240 seconds)
18:24:24  * Gustavo6046joined
18:24:48  * DrunkZZZjoined
18:26:33  <deviantfero>anyone know a way to install two package versions with npm at once?
18:26:39  <deviantfero>should I just use yanr?
18:26:42  <deviantfero>yarn*
18:27:01  * RusAlexjoined
18:27:26  <deviantfero>jjrabbit, that's the reason btw, most service keys and things like that should never go into version control
18:27:43  <deviantfero>so you put them into environment variables in your os with the help of .env files
18:27:47  <samsch>deviantfero, Usually that's something that would happen automatically if it needs to, since usually the only reason you need multiple versions of something is because your deps do.
18:28:14  <deviantfero>samsch the problem is that it's not a dependency of my package, it's an optional dependency
18:28:53  <deviantfero>for the real problem, I use canvas^2.0.0 for one thing, but the other task I'm doing requires canvas^1.0.0 (idk why, the package does not support 2.0.0)
18:28:54  <samsch>jjrabbit, Environment vars from from the environment, and one way to put them there is with .env files.
18:29:36  <samsch>jjrabbit, Better than env vars though is a simple config file that you gitignore. Then you don't run the risk of someone using system level env vars which can be read globally by the system.
18:29:58  * wsierociquit (Remote host closed the connection)
18:30:24  * darkSeidjoined
18:30:38  <deviantfero>samsch is right, and env vars don't make much sence in front end projects
18:30:43  * alexge50joined
18:30:55  <deviantfero>it's much better to have a config.js somewhere around
18:31:22  <deviantfero>(that you ignore in VC ofc)
18:32:38  <deviantfero>well, I'll just re-implement image loading with promises in the old version of the package
18:32:46  * brandly_joined
18:37:54  * realisationjoined
18:38:28  * carifjoined
18:38:31  * sxaquit (Ping timeout: 246 seconds)
18:40:56  * DrunkZZZquit (Quit: DrunkZZZ)
18:41:33  * Laptop_miniquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
18:41:46  * paulcarrotyjoined
18:42:52  * erg0s1quit (Remote host closed the connection)
18:43:31  * trevorquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
18:44:08  * nononojoined
18:44:49  * fas3rquit (Ping timeout: 246 seconds)
18:45:13  * DeltaHeavyquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
18:45:42  * gambl0r3joined
18:46:31  * DeltaHeavyjoined
18:47:20  * carifquit (Ping timeout: 250 seconds)
18:47:36  * wsierocijoined
18:48:22  * mezodjoined
18:51:11  * xx_voidwatch_xxjoined
18:51:17  * osephjoined
18:52:02  * rendarjoined
18:53:50  * voidwatchquit (Ping timeout: 250 seconds)
18:54:29  <joepie91>!env vars @ jjrabbit
18:54:29  <ecmabot>jjrabbit: Don't use environment variables to store credentials like passwords and keys! They're too easy to leak, because many tools don't treat environment variables as private information. Use configuration files (eg. config.json) with strict permissions (0400) instead.
18:54:31  * Jetimonjoined
18:54:53  <joepie91>deviantfero: it is not possible to install two different-version copies of the same package into a single node_modules folder
18:55:29  <joepie91>deviantfero: you can have different versions within different node_modules folders though, including within the same project (but elsewhere in the dependency tree)
18:56:06  * orbyt_quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
18:56:19  <jjrabbit>joepie91: ok thanks i'll do that instead
18:56:31  * asteele_joined
18:56:35  * paulcarrotyquit (Remote host closed the connection)
18:56:44  <jjrabbit>why are all these medium authors telling me to always put all my keys in environment variables though?
18:56:50  * darkSeid_joined
18:57:37  <joepie91>jjrabbit: it's bad advice that originally originates from https://12factor.net/, which was widely hyped as a set of supposed good practices despite really just being a "how to design your app for Heroku" guide
18:57:46  <joepie91>unfortunately, the recommendation has stuck
18:57:51  <jjrabbit>lol
18:57:55  <jjrabbit>ok thanks
18:57:56  * lpinquit (Quit: Textual IRC Client: www.textualapp.com)
18:58:58  <joepie91>the claims on that site about env vars are actually kind of comically nonsense
18:59:07  <joepie91>"Env vars are easy to change between deploys without changing any code; unlike config files, there is little chance of them being checked into the code repo accidentally; and unlike custom config files, or other config mechanisms such as Java System Properties, they are a language- and OS-agnostic standard."
18:59:35  <joepie91>yes, a language- and OS-agnostic standard where you need to invent your own representation and parser for anything that isn't a string, unlike... *checks notes* ... JSON?
18:59:35  * osephquit (Quit: sleepy.)
19:00:20  <joepie91>(not to mention that a) a gitignore entry is a one-time setup step and b) people create .env files anyway, so the entire "little chance of being checked in" point is basically nonsense too)
19:00:29  * asteelequit (Ping timeout: 272 seconds)
19:00:56  <jjrabbit>alright next time someone tells me to use env variables i'll just slap them
19:01:01  <joepie91>:P
19:01:04  * paulcarrotyjoined
19:01:24  <samsch>Bonus points that env vars do actually work different in different OSs, while a config file works pretty much identically (*glares at non-case-sensitive windows BS*).
19:01:47  <joepie91>yeah, I'm not sure that the author of this particular paragraph has ever, like, used env vars
19:01:57  * carifjoined
19:02:23  <danneu>'nonsense' is a bit of a strong word though. but you do start to see the trade-offs if you've ever gone off the deep in with env-vars-for-everything.
19:02:24  * slajaxjoined
19:02:45  <deviantfero>jjrabit, might be good for backend, where you might share this variables between several languages
19:02:47  * chargen_quit (Ping timeout: 240 seconds)
19:02:49  <deviantfero>thus language agnostic
19:02:58  <deviantfero>but in frontend it really makes no sense at all
19:03:06  <joepie91>danneu: it's definitely nonsense :) it's claiming something is a feature of env vars when it is actually the opposite
19:03:17  <deviantfero>thus language agnostic becomes and advantage*
19:03:20  * wsierociquit (Remote host closed the connection)
19:03:20  <samsch>deviantfero, Because a json file can't be read by other languages?
19:03:26  <joepie91>deviantfero: type of application doesn't matter, env vars are always the wrong option for this sort of configuration
19:03:39  <joepie91>and env vars are not "language agnostic" any more than anything that literally only supports strings is :)
19:03:51  <joepie91>in practice you need more than just strings and so you just end up rolling your own parser
19:03:58  * Laptop_minijoined
19:03:59  <joepie91>... in every language, individually, specific to that application
19:04:11  <joepie91>whereas JSON is supported in basically every language on every platform everywhere
19:04:13  <joepie91>down to embedded systems
19:04:37  <joepie91>and then you have a single standard that can represent structural data and decode ~the same in every environment
19:05:05  <joepie91>ie. the language-agnostic 'feature' of env vars is non-existent
19:05:13  * reberjoined
19:05:36  * fas3rjoined
19:05:38  <joepie91>you can only claim it to be 'language-agnostic' by ignoring real-world application requirements and pretending that everything is and will only ever be a flat set of string-shaped keys to string-shaped values
19:05:40  * reber__joined
19:06:09  * chargenjoined
19:06:15  <danneu>12factor definitely starts to feel like a how-to-design-for-heroku guide. but at the same time there's plenty of overlap with general good practices that are pretty annoying to discover yourself in production.
19:07:12  <joepie91>danneu: the problem with guides that are partially right is that if they claim to be *entirely* right, the guide as a whole becomes useless, because if you're reading that guide then you very likely do not have the background or knowledge to sift the good from the bad
19:07:23  <joepie91>yes, there are certainly valid points in there
19:07:24  <joepie91>but there'
19:07:31  <joepie91>but there's no reason to ever really point somebody at it *
19:08:04  <joepie91>(I'd much rather point people at guides that are *not* full of errors/misrepresentations)
19:09:57  * marthinalquit (Remote host closed the connection)
19:10:47  * marthinaljoined
19:12:07  * Laptop_miniquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
19:13:22  * carifquit (Ping timeout: 268 seconds)
19:13:53  * rendarquit
19:17:42  * marthinalquit (Ping timeout: 268 seconds)
19:18:01  <samsch>It would be nice if more of those existed
19:18:30  <joepie91>it would indeed :)
19:18:59  * jamesdrawneekjoined
19:19:52  <samsch>I'd say it would be nice if they'd *stay* that way too, but I do actually like that the ecosystem evolves. Having written the same guide 3 or 4 times now though... It can be annoying.
19:22:45  * Liberjoined
19:23:19  * jamesdrawneekquit (Ping timeout: 246 seconds)
19:24:37  * brandly_quit (Remote host closed the connection)
19:25:16  * julianduquejoined
19:27:48  * sauvinquit (Read error: Connection reset by peer)
19:27:50  * edrocksquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
19:28:09  * carifjoined
19:28:23  * Liberquit (Quit: Leaving)
19:28:33  * ahmed_elgabrijoined
19:28:57  * trevorjoined
19:31:15  * deviantferoquit (Ping timeout: 246 seconds)
19:33:34  * deviantferojoined
19:33:46  * jlippsjoined
19:34:13  * orbyt_joined
19:34:18  * gloomyquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
19:34:22  * dhoelzerjoined
19:36:09  * slajaxquit (Ping timeout: 246 seconds)
19:36:35  <dhoelzer>I think I've boxed myself into a corner... I have a set of documents of different types; the top documents have nested arrays that point to the second tier, the second tier have nested arrays that point to the third tier, all using the _ids... I now want to create a clone of a top level object, duplicating all of the separated nested documents... What I want to do is pretty straightforward, but the asynchronous nature of
19:36:35  <dhoelzer> how this runs is really going to bite me... Any advice?
19:37:09  <dhoelzer>I effectively need to grab the starting top level object, then grab all of the other objects it points to and duplicate them, capturing the IDs, and storing them in the new clone..
19:37:25  * carifquit (Ping timeout: 268 seconds)
19:37:54  * m0therquit (Remote host closed the connection)
19:37:59  * Aquaziquit (Quit: Connection closed for inactivity)
19:38:21  * m0therjoined
19:38:24  <joepie91>dhoelzer: this sounds like you're trying to fit relational data into a document database?
19:38:27  * v01d4lph4quit (Remote host closed the connection)
19:38:43  <dhoelzer>Well, that was a design choice made a year ago by someone else on the team... but yes, that's what I have
19:38:47  * munsterb1rgjoined
19:39:08  * v01d4lph4joined
19:39:12  <dhoelzer>Now I have to find a way to easily create a clone function so that the old "relations" can be used as a template for a new "thing"
19:39:14  <joepie91>from your response I'm guessing you already know this is not a great idea? :P
19:39:20  <dhoelzer>Yes, I know. :)
19:39:24  <joepie91>right, okay :)
19:39:24  <dhoelzer>But it's what I've been handed
19:39:26  * darkSeidquit (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
19:39:39  <joepie91>(I do recommend looking at changing that though, but that's a separate discussion)
19:39:49  <joepie91>are you currently using promises?
19:39:52  <dhoelzer>The proof of "this is a bad idea" is that it's hard. I believe that if something's hard, you're doing it the wrong way or you designed it incorrectly.
19:39:57  <dhoelzer>I am... find().then()
19:40:16  * wsierocijoined
19:40:19  <dhoelzer>The trouble is that I have an array of IDs at each level, and I need to clone the objects that those IDs match up with and capture the new IDs.
19:40:24  * EREVANquit
19:40:45  <joepie91>dhoelzer: how badly does this fan out? like, if you were to fetch a single record and everything that it references directly or indirectly, how much data would you end up with?
19:40:49  * blaguvestjoined
19:40:55  <dhoelzer>So, I can find({_id:{$in:[thing.otherthings]}}).then
19:41:35  <dhoelzer>Volume wise? Not much. Top level points to no more than 5 things in an array, second level points to no more than 10 things each. The things below that are a straight copy, so they don't matter.
19:41:44  * munsterbergquit (Ping timeout: 268 seconds)
19:41:57  <joepie91>so basically ~50 total records at a time, that's not going to be much of an issue memory-wise
19:42:04  <joepie91>dhoelzer: in that case, are you familiar with map/filter/reduce?
19:42:11  <joepie91>the concept
19:42:22  <dhoelzer>No, memory is not a problem. I am familiar with those, but I've never tried to apply that to Mongo in any way...
19:42:27  <dhoelzer>Well, not directly for creating new stuff
19:42:41  <joepie91>dhoelzer: and are you currently using Bluebird yet, or just ES6 Promises?
19:42:49  <dhoelzer>Just ES6 promises in Angular
19:42:51  <dhoelzer>err. .node
19:42:57  <joepie91>was gonna say :D
19:42:59  <dhoelzer>Angular is ont he front end. Confused myself
19:43:00  <dhoelzer>:)
19:43:29  * chargen_joined
19:43:43  * v01d4lph4quit (Ping timeout: 250 seconds)
19:43:46  <joepie91>dhoelzer: anyway, I would recommend having a look at Bluebird then; it's a Promise implementation that contains a bunch of useful utilities for more complex asynchronous operations... it's compatible with ES6 Promises if you use Promise.try more explained here: http://cryto.net/~joepie91/blog/2016/05/11/what-is-promise-try-and-why-does-it-matter/)
19:43:52  <dhoelzer>(This is the organization's first Angular project... so it's got a great deal of weirdness in it... I spent a lot of time fixing the services to actually act as services using sockets rather than individual web queries)
19:44:03  <dhoelzer>Very cool. Thakn you! I'll go read
19:44:13  <joepie91>dhoelzer: you'd then probably end up with something like a cloneRecord function, that takes an ID, and then internally creates a clone and returns / resolves to the new ID
19:44:32  * chargenquit (Ping timeout: 250 seconds)
19:44:40  <joepie91>dhoelzer: then you can just recursively map through the arrays in the records, using Bluebird's .map utility to map the entire array of references through your cloneRecord function
19:44:45  <dhoelzer>My biggest concern is that I'm going to end up building the array of IDs in the object with repeated saves and drop an ID somewhere
19:44:49  * jlippsquit (Quit: My comp has gone to sleep. ZZZzzz…)
19:44:50  <dhoelzer>Thank you!
19:45:08  <joepie91>(you'll end up with cloneRecord containing the mapping logic that recursively invokes cloneRecord itself, probably)
19:45:16  <joepie91>dhoelzer: how do you mean?
19:45:19  <dhoelzer>Makes sense.
19:45:37  <joepie91>dhoelzer: also, some illustrative code that also shows map usage: https://gist.github.com/joepie91/b0c8f9a9309f5398080eab84482d58a4
19:45:57  * unlink_quit (Ping timeout: 246 seconds)
19:46:08  * remyoquit (Quit: Connection closed for inactivity)
19:46:40  <dhoelzer>In my head, thinking it through before asking, I'm concerned that I'm going to have a number of different find({$in}).then's that end up running asynchronously, all of which are updating the same higher level object.. I fear that I can end up with race conditions where two threads try to update the same object without knowledge of the other and the first one's write is lost... Though maybe Mongo versioning would save me som
19:46:40  <dhoelzer>ehow?
19:47:06  <dhoelzer>I don't know, this is a new venture for me. When I've used Mongo before it's always straight document stores, not these related table things
19:47:24  <dhoelzer>This looks like a SQL guy tried to make Mongoose act like SQL
19:47:50  <joepie91>dhoelzer: in the approach I described, there would be no updating of records at all; you'd be recreating new documents entirely
19:48:08  <joepie91>basically producing an entire tree of new documents, where the higher-level documents are composed of references to the just-created lower-level documents
19:48:10  * EREVANjoined
19:48:27  <joepie91>the only operations you should need are 'select' and 'insert' (or whatever Mongo calls its equivalent)
19:48:28  * duckpuppyquit (Remote host closed the connection)
19:48:53  <dhoelzer>Right... I was referring to when the higher level object is being written. Anyway, let me just go read it. I honestly haven't tried anything yet. My thoughts had been revolving around recursive functions that eventually return after ensuring they have copied all objects.
19:49:03  <dhoelzer>.map will definitely simplify that
19:49:16  <joepie91>dhoelzer: the higher-level object won't be written until the lower-level objects have been inserted and produced a new ID
19:49:27  * duckpuppyjoined
19:49:30  <dhoelzer>Perfect. Exactly what I'm trying to do.
19:49:36  <dhoelzer>Thanks. Reading time
19:49:39  <joepie91>:)
19:50:36  * altabjoined
19:50:40  * sozubaquit (Quit: bye bye)
19:50:54  * ragecryxjoined
19:52:09  * carifjoined
19:52:23  <^la>GreenJello, thanks
19:52:36  * tkorejoined
19:52:38  * kyanjoined
19:53:33  * unlink2joined
19:55:15  * Laptop_minijoined
19:56:38  * chargenjoined
19:57:29  * tkorequit (Ping timeout: 272 seconds)
19:57:56  * chargen_quit (Ping timeout: 240 seconds)
19:59:52  * paulcarrotyquit (Read error: Connection reset by peer)
20:00:04  * wsierociquit (Remote host closed the connection)
20:00:19  * paulcarrotyjoined
20:01:43  * chargen_joined
20:02:22  * ffx_quit (Remote host closed the connection)
20:02:47  * chargenquit (Ping timeout: 240 seconds)
20:03:11  * planiganquit (Ping timeout: 272 seconds)
20:04:12  * v01d4lph4joined
20:05:02  * Gazoooquit (Quit: The Lounge - https://thelounge.chat)
20:06:43  * reber__quit (Ping timeout: 245 seconds)
20:07:13  * reber__joined
20:07:36  * reberquit (Ping timeout: 272 seconds)
20:08:11  * reberjoined
20:08:20  * kfoonamalikjoined
20:09:01  * Gazooojoined
20:10:24  * EREVANquit
20:10:28  * unlink_joined
20:10:34  * unlink2quit (Ping timeout: 246 seconds)
20:10:38  * jlippsjoined
20:10:49  * erg0s1joined
20:17:33  * planiganjoined
20:18:08  * CrazyTux[m]quit (Quit: This computer has gone to sleep)
20:20:01  * ed209quit (Remote host closed the connection)
20:20:08  * ed209joined
20:24:34  * carifquit (Ping timeout: 246 seconds)
20:24:51  * brandly_joined
20:26:21  * nuckjoined
20:30:56  * dhoelzerquit
20:32:49  * AtumT_joined
20:34:39  * mona_xquit (Quit: mona_x)
20:35:08  * iffraffquit (Remote host closed the connection)
20:35:08  * iffraff2quit (Remote host closed the connection)
20:35:46  * AtumTquit (Ping timeout: 246 seconds)
20:36:14  * asteele_changed nick to asteele
20:38:26  * v01d4lph4quit (Ping timeout: 240 seconds)
20:39:01  * cnsvcjoined
20:39:59  * Ergoquit (Remote host closed the connection)
20:40:32  * kyanquit (Ping timeout: 272 seconds)
20:42:18  * carifjoined
20:43:38  * shush_quit (Remote host closed the connection)
20:45:58  * marthinaljoined
20:46:46  * AtumTjoined
20:46:50  * fourtonfishjoined
20:46:56  * AtumT_quit (Ping timeout: 240 seconds)
20:47:36  * shushjoined
20:48:04  * CrazyTux[m]joined
20:48:19  <gambl0r3>where do keep variables such as api keys, db credentials in what file so that they're not exposed to the public?
20:48:33  * jamesdrawneekjoined
20:49:52  <cdunklau>gambl0r3: in a config file
20:49:53  <samsch>gambl0r3, `config.js` or `config.json` in the root works pretty well.
20:50:01  * keepLear_joined
20:50:03  * marthinalquit (Ping timeout: 245 seconds)
20:50:03  <cdunklau>just don't commit it to VCS :)
20:50:37  <cdunklau>gambl0r3: also don't cross post :/
20:50:49  * carifquit (Ping timeout: 246 seconds)
20:51:07  * keepLearning512quit (Ping timeout: 240 seconds)
20:51:17  <gambl0r3>sorry. thanks
20:51:48  * jlippsquit (Quit: My comp has gone to sleep. ZZZzzz…)
20:53:24  * tlentjoined
20:54:13  * brandly_quit (Ping timeout: 245 seconds)
20:54:21  * orbyt_quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
20:54:40  * chargen_quit (Quit: BBL)
20:55:26  * jlippsjoined
20:55:52  * leatherface416joined
20:56:43  <joepie91>gambl0r3: specifically, a config.json works best (JSON, so also easy to inspect from other languages/tools), and make sure it's a) in .gitignore (or your equivalent if you don't use Git but another tool), and b) has a 0400 mode in production, which restricts permissioins to read-only for the owner only
20:57:06  * leatherface416quit (Client Quit)
20:57:15  <joepie91>cdunklau: speaking of VCSes, you may find Pijul interesting
20:59:06  * orbyt_joined
20:59:09  * tlentquit (Remote host closed the connection)
21:02:03  * morenoh149quit (Remote host closed the connection)
21:02:27  * morenoh149joined
21:03:39  * orbyt_quit (Ping timeout: 246 seconds)
21:04:06  * dungeon_joined
21:04:27  * dungeon_part
21:06:02  * carifjoined
21:06:11  * dastierquit (Remote host closed the connection)
21:08:18  * admin123joined
21:09:36  * alexge50quit (Ping timeout: 246 seconds)
21:10:27  * morenoh149quit (Ping timeout: 240 seconds)
21:11:07  * admin123changed nick to morenoh149
21:11:42  * Binerojoined
21:12:27  * willcquit (Ping timeout: 240 seconds)
21:12:30  * aerexquit (Quit: WeeChat 2.2)
21:16:26  * Booster2oooquit (Quit: KVIrc 4.2.0 Equilibrium http://www.kvirc.net/)
21:18:26  * shushquit (Remote host closed the connection)
21:20:13  * carifquit (Ping timeout: 246 seconds)
21:21:37  * plexigrasquit (Ping timeout: 246 seconds)
21:23:06  * mezodquit (Remote host closed the connection)
21:28:46  * aerexjoined
21:29:41  * ragecryxquit (Quit: Leaving)
21:30:13  * jasonzhouujoined
21:30:59  * kerrangquit (Remote host closed the connection)
21:33:54  * slajaxjoined
21:35:31  * carifjoined
21:39:09  * shushjoined
21:40:22  * Anthaasquit (Ping timeout: 244 seconds)
21:40:34  * tkorejoined
21:40:54  * Anthaasjoined
21:41:39  * reberquit (Remote host closed the connection)
21:41:39  * reber__quit (Read error: Connection reset by peer)
21:43:30  * schneid3306joined
21:44:56  * tkorequit (Ping timeout: 240 seconds)
21:45:08  * Yannickjoined
21:46:10  * geoffoquit (Read error: Connection reset by peer)
21:46:28  * Bineroquit (Read error: Connection reset by peer)
21:46:40  * Yannickpart
21:46:52  * geoffojoined
21:48:44  * renn0xtk9quit (Quit: Konversation terminated!)
21:50:07  * carifquit (Ping timeout: 240 seconds)
21:50:08  * toddjoined
21:50:27  * toddquit (Client Quit)
21:51:14  * munsterb1rgquit (Ping timeout: 268 seconds)
21:51:37  * Yannickjoined
21:52:33  * shushquit (Ping timeout: 245 seconds)
21:54:44  * Yannickpart
21:58:25  * jlippsquit (Quit: My comp has gone to sleep. ZZZzzz…)
21:58:44  * omaralvaradolunaquit (Remote host closed the connection)
21:59:07  * leptonejoined
21:59:19  * omaralvaradolunajoined
21:59:38  * Yannickjoined
22:00:16  * shushjoined
22:00:57  <jjrabbit>is express able to _make_ POST requests?
22:01:48  * jlippsjoined
22:02:13  * ravustajaquit (Quit: leaving)
22:02:26  * Yannickpart
22:02:35  <leptone>jjrabbit: yes
22:02:38  <leptone>What's the difference between an integration test and an end to end test?
22:03:18  * Sven_vBquit (Disconnected by services)
22:03:20  * Sven_vB_joined
22:03:20  * morenoh149quit (Read error: Connection reset by peer)
22:03:31  <joepie91>jjrabbit: Express doesn't "make requests" at all, that's out of scope for a webserver
22:03:39  <joepie91>jjrabbit: your own code can do whatever it wants though, including making HTTP requests
22:03:41  * omaralvaradolunaquit (Ping timeout: 250 seconds)
22:03:45  * morenoh149joined
22:03:56  <joepie91>jjrabbit: in which case I'd recommend https://www.npmjs.com/package/bhttp :)
22:04:00  * Roughyquit (Quit: Meadow Fresh milk)
22:04:09  * munsterbergjoined
22:04:42  * leptonequit (Read error: Connection reset by peer)
22:05:00  * carifjoined
22:05:10  * slajaxquit (Ping timeout: 244 seconds)
22:05:46  <jjrabbit>joepie91: so that guy was just talking out of his ass then bailed lmao
22:05:53  <jjrabbit>joepie91: ok i will check out that npm ty
22:06:10  * leptonejoined
22:06:16  * hyperiscoquit (Read error: Connection reset by peer)
22:06:31  <leptone>What's the difference between an integration test and an end to end test?
22:06:52  <ljharb>leptone: all test adjectives are poorly defined, tbh
22:06:53  * ravustajajoined
22:07:03  <ljharb>leptone: so really, it's all "you know it when you see it"
22:07:22  <ljharb>all of my unit tests are also integration tests, but they're not end-to-end because i stub out low-level i/o
22:08:28  * Roughyjoined
22:08:50  <joepie91>jjrabbit: (disclaimer: I wrote that library, because the alternatives suck :P)
22:09:36  <jjrabbit>joepie91: well if i have any problems i know where to find you :)
22:09:58  * paulcarrotyquit (Remote host closed the connection)
22:10:01  <jjrabbit>hehe jk
22:10:34  * deviantferoquit (Ping timeout: 250 seconds)
22:11:36  * omaralvaradolunajoined
22:12:03  * mezodjoined
22:12:20  * akosednarjoined
22:12:20  * akosednarquit (Changing host)
22:12:20  * akosednarjoined
22:12:48  * deviantferojoined
22:12:52  * mat001_joined
22:14:54  * mat001quit (Ping timeout: 250 seconds)
22:15:49  * kakashiALquit (Ping timeout: 268 seconds)
22:16:31  * carifquit (Ping timeout: 268 seconds)
22:17:02  * joepie91is 50% of the way to building a Redux-based plugin system...
22:18:33  * orbyt_joined
22:19:12  * omaralvaradolunaquit (Remote host closed the connection)
22:19:26  <darkSeid_>a redux based plugin system?
22:19:33  <darkSeid_>I don't even know what that means exactly
22:19:46  * marthinaljoined
22:19:48  * omaralvaradolunajoined
22:19:59  <joepie91>darkSeid_: https://gist.github.com/joepie91/d67c4f5a9a8f3ad8f16f3a72ff7ea1b4
22:20:34  <joepie91>(example almost-a-plugin)
22:20:34  * marthinalquit (Remote host closed the connection)
22:20:41  <joepie91>quite literally, a plugin system for applications, that's based around Redux
22:20:59  * hemxjoined
22:21:28  * hemxpart
22:21:51  * hemxjoined
22:22:40  * kjartanquit (Read error: Connection reset by peer)
22:22:40  * OpenSorceressjoined
22:23:20  * Fanjoined
22:23:56  * omaralvaradolunaquit (Ping timeout: 240 seconds)
22:24:08  * Fanquit (Client Quit)
22:24:39  * macwinnerquit (Read error: Connection reset by peer)
22:24:55  * kjartanjoined
22:25:02  * macwinnerjoined
22:25:19  * X-51quit (Ping timeout: 246 seconds)
22:27:33  <hemx>Hi, I would like to get involved into creating tests for node.js modules but I have some trouble setting everything up. Is anyone here who could help me?
22:28:34  <DeltaHeavy>hemx You could just use Jest and write files alongside the files that you want to test like `foo.spec.js` which tests `foo.js`
22:28:56  <DeltaHeavy>Personally what I do, is if I have `foo.js`, in that same dir I'll have a `__tests__` directory with `foo.spec.js` in it.
22:29:08  <DeltaHeavy>So my `src` folder is littered with `__tests__` directories.
22:30:14  <DeltaHeavy>You then in your package.json add for the `"test"` npm script `"test": "jest"`
22:30:21  <DeltaHeavy>And `npm test` or `npm t` to run them
22:31:04  <darkSeid_>joepie91 code is beyond me but damn how big are your tabs! :p
22:31:09  * carifjoined
22:32:04  <hemx>@DeltaHeavy Thank you, but I think this is to test my own code, right? What I want to do is writing tests for the internal node.js modules, like the ones executed when building the project from source and running "make coverage".
22:32:13  <DeltaHeavy>darkSeid_ https://gist.github.com/joepie91/d67c4f5a9a8f3ad8f16f3a72ff7ea1b4?ts=2
22:32:14  <joepie91>darkSeid_: blame github :)
22:32:26  <DeltaHeavy>I need to make a tampermonkey extension that does that for me...
22:32:28  <darkSeid_>ahh, better xD
22:32:30  * Jetimonquit (Ping timeout: 252 seconds)
22:32:34  <joepie91>lol
22:32:42  <joepie91>darkSeid_: and well, what part of the code is unclear? :P
22:32:53  * willcjoined
22:33:12  <DeltaHeavy>joepie91 I personally think some more \n would make it nicer
22:33:12  <darkSeid_>well, what is it lol
22:33:48  * kakashiALjoined
22:33:49  <joepie91>darkSeid_: this is the code that handles a particular "add user to friends list" form in a project I'm working on
22:34:31  <joepie91>talking to the server via an API lib, waiting for an acknowledgment, and either producing an error for the end user if they did something wrong / something broke, or emitting a 'friendAdded' action if it succeeded so that the friends list actually gets updated on the screen
22:34:50  <darkSeid_>ah ok
22:35:20  <joepie91>anyway, I'm doing some hackery with prefixes so that plugins can pretend to have their own scope with their own actions and state and whatnot
22:35:31  <joepie91>that can't conflict with other plugins
22:36:04  * marthinaljoined
22:36:52  * gambl0r3quit (Ping timeout: 246 seconds)
22:37:10  <DeltaHeavy>joepie91 Can't you just use the `name` as the prefix?
22:37:22  <joepie91>DeltaHeavy: yes, that is what it is doing behind the scenes
22:37:28  <DeltaHeavy>Nice
22:37:34  <joepie91>it does that transparently
22:37:44  <joepie91>for the most part anyway :P
22:37:48  <joepie91>currently implementing that for the state tree also
22:37:51  <DeltaHeavy>As it should :p
22:38:17  * jamesdrawneekquit (Remote host closed the connection)
22:39:44  <hemx>DeltaHeavy Thank you, but I think this is to test my own code, right? What I want to do is writing
22:39:47  <hemx> tests for the internal node.js modules, like the ones executed when building the project from source
22:39:47  * kakashiALquit (Ping timeout: 244 seconds)
22:39:47  * kikudjiroquit (Ping timeout: 240 seconds)
22:40:22  * marthinalquit (Ping timeout: 246 seconds)
22:40:28  * ahmed_elgabriquit (Quit: WeeChat 2.3)
22:40:35  <DeltaHeavy>hemx Oh, so C++ stuff?
22:41:10  <hemx>(sorry for the weird message formatting, I'm new to this IRC app)
22:41:19  <hemx>DeltaHeavy: no, javascript stuff
22:41:37  <DeltaHeavy>Oh wait I"m thinking of V8
22:41:39  <DeltaHeavy>Nevermind me
22:41:40  <joepie91>hemx: you're talking about the stuff in lib/ in the nodejs/node repo, right?
22:41:49  <DeltaHeavy>If you have specific questions feel free to ask.
22:42:29  <hemx>DeltaHeavy: as for example, I'm talking about tests like node/test/parallel/test-url-format.js.
22:42:46  * carifquit (Ping timeout: 272 seconds)
22:42:54  * brinyquit (Read error: Connection reset by peer)
22:42:58  <DeltaHeavy>hemx joepie91 probably knows better than me but after git cloning you could probably run `npm install && npm test` and it'll run
22:44:05  * spacesuitdiverquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
22:44:20  <joepie91>I don't have particularly much knowledge of this :) the reason I'm asking is because if you don't get a lot of answers here about core stuff, #node-dev is usually a more effective place to ask
22:45:43  * catbustersquit (Quit: Connection closed for inactivity)
22:46:06  <hemx>DeltaHeavy Tbh, I never really used npm before but if I do as you mentioned, I get only errors, probaply because the package.json is missing. But all the other tests run anyway when I use "make coverage", so there should be another way.
22:46:08  * orbyt_quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
22:46:36  <DeltaHeavy>hemx What errors?
22:46:40  <DeltaHeavy>Why is package.json missing?
22:46:43  <hemx>joepie91 ah, okay. Then I might just ask there, thank you for suggesting )
22:46:51  <joepie91>DeltaHeavy: we're talking core here
22:46:57  <joepie91>I don't think it _has_ a package.json
22:46:59  <DeltaHeavy>Oh right
22:46:59  <DeltaHeavy>lol
22:47:06  <DeltaHeavy>Sorry I don't know shit about this stuff
22:47:21  <joepie91>DeltaHeavy: it would be.. interesting, for core libraries to depend on stuff from npm, no? :P
22:47:46  <DeltaHeavy>joepie91 Sounds like a pandoras box
22:47:49  <DeltaHeavy>npm i runs FOREVER
22:48:08  <joepie91>it'd be a cyclical dependency
22:48:16  <joepie91>except with a network boundary sandwiched in there somewhere
22:48:17  <joepie91>lol
22:48:19  <hemx>Sorry if my questions were not so clear, I'm not so much involved in the node.js project yet^^
22:48:24  <joepie91>hemx: no worries :)
22:48:53  <DeltaHeavy>Naw Im' just giving bad advice
22:48:55  * asigquit (Quit: Bye)
22:49:03  <joepie91>hemx: I'm curious, what's your reason for getting involved? it's rare to see somebody use Node but not npm
22:51:38  * neuro_syspart ("ERC (IRC client for Emacs 26.1)")
22:52:34  * orbyt_joined
22:52:39  <hemx>joepie91 Well, I'm working in the University and atm I'm doing a security related research / project about URL parsing.
22:53:27  <hemx>I need to write those tests because I need to get coverage of my tests on the builtin URL modules of node.js
22:53:32  <joepie91>ahh, right
22:54:42  <joepie91>hemx: this may or may not be useful, but I'll link it anyway: https://github.com/nodejs/security-wg/blob/master/processes/vuln_db.md
22:54:53  <joepie91>in case you're also interested in URL parsing implementations that live in third-party packages
22:55:10  <joepie91>the data is at https://github.com/nodejs/security-wg/tree/master/vuln
22:55:38  <joepie91>basically contains advisories for approximately all of the vulnerabilities discovered in third-party packages on npm, there may be URL parsing things amongst them
22:55:48  <joepie91>oh, apparently core advisories are there now also :)
22:56:53  * elichai2quit (Quit: Connection closed for inactivity)
22:57:26  * carifjoined
22:58:27  <hemx>joepie91 thank you very much. Let's see if I can add something to that vulnerability database in near future :P
22:58:41  <joepie91>hehe
22:58:47  * eclmquit (Ping timeout: 240 seconds)
22:58:53  * glowpeltquit (Quit: WeeChat 2.3)
23:00:56  * leptonequit (Remote host closed the connection)
23:01:25  <joepie91>yay, I triggered an infinite recursion in immutable.js... somehow...
23:01:35  * glowpeltjoined
23:02:14  * omaralvaradolunajoined
23:02:56  * OpenSorceressquit (Ping timeout: 240 seconds)
23:03:53  * hemxpart
23:05:20  * omaralva_joined
23:06:26  * omaralvaradolunaquit (Ping timeout: 240 seconds)
23:07:55  * kakashiALjoined
23:08:22  * jlippsquit (Quit: My comp has gone to sleep. ZZZzzz…)
23:10:05  * omaralva_quit (Ping timeout: 268 seconds)
23:12:19  * CrazyLazyDazyjoined
23:12:32  * kakashiALquit (Ping timeout: 250 seconds)
23:13:54  * schneid3306quit (Quit: ZZZzzz…)
23:15:50  <joepie91>this is beginning to look an awful lot like an immutable.js bug...
23:17:11  * jlippsjoined
23:18:41  * fourtonfishquit (Quit: fourtonfish)
23:20:07  * julianduquequit (Ping timeout: 240 seconds)
23:20:47  * trevorquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
23:22:57  * CrazyLazyDazyquit (Read error: Connection reset by peer)
23:23:36  * dlwicksellquit (Quit: Leaving.)
23:23:51  <gajus>I am writing an article about knex.js and I would like to know what is your use case for using an SQL builder
23:23:57  <gajus>any volunteers to contribute their use case?
23:24:09  * dsiypl4__quit (Quit: Leaving)
23:24:55  <joepie91>gajus: ability to use language-native types and syntax for constructing queries, ability to compose together partial queries, both of the aforementioned without manual context-less string concatenation/interpolation
23:25:07  * ^esc_joined
23:25:15  <joepie91>(this extends to eg. Knex' transaction wrapper, which uses JS function mechanics to auto-commit/rollback)
23:25:15  <DeltaHeavy>gajus Safe by default and keeps things within the same thinking paradigm as JS
23:25:23  * omaralvaradolunajoined
23:25:31  * FunnyLookinHatquit (Ping timeout: 246 seconds)
23:25:46  <gajus>"safe" argument is bullshit
23:25:50  <gajus>https://github.com/gajus/slonik
23:25:54  <gajus>whats unsafe about using raw SQL?
23:25:56  * ^escquit (Ping timeout: 240 seconds)
23:26:12  <DeltaHeavy>SQL injection
23:26:14  * Venemoquit (Quit: Communi 3.5.0 - http://communi.github.com)
23:26:17  <DeltaHeavy>From user input
23:26:22  <DeltaHeavy>It's not bullshit at all
23:26:46  <gajus>https://github.com/gajus/slonik#slonik-about-slonik-protecting-against-unsafe-value-interpolation
23:26:56  <gajus>I guarantee you it is bullshit
23:27:09  <DeltaHeavy>Well yeah SQL queries CAN use paramtized values
23:27:11  * altabquit (Read error: Connection reset by peer)
23:27:28  <DeltaHeavy>If you use knex by DEFAULT you won't have the ability to make an unsafe query without actually writing SQL in knex.raw
23:27:51  <gajus>DeltaHeavy: which is the same for SQL client
23:28:24  <DeltaHeavy>It's more "by default" with knex I'd say
23:28:41  <DeltaHeavy>There's no going out of your way to do it in a particular way that's safe with user input
23:28:47  * tkorejoined
23:28:54  <joepie91>noting here that parameterized values cannot be used everywhere in queries, and that escaping requires contextual awareness to use the correct escaping method; a query builder can do that (since it controls the context), a template string thingem cannot unless it brings in an entire SQL parser
23:28:58  <gajus>Same for the client that I have just linked
23:29:06  <gajus>There is literally no way for you to add unsafe user input
23:29:16  * julianduquejoined
23:29:21  <gajus>(rolls eyes)
23:29:32  <joepie91>(same reason that HTML templaters are safer than string-based templaters, incidentally)
23:29:47  <DeltaHeavy>joepie91 said it better
23:30:03  <gajus>Please read through the article/ README.md. I guarantee you that Slonik is safer than Knex.js "by default", whatever that means.
23:30:58  <DeltaHeavy>Hey you asked me for my opinion
23:31:04  <DeltaHeavy>I gave it...you're welcome I guess...
23:31:05  * CrazyyMaxxquit (Quit: Bye!)
23:31:22  <DeltaHeavy>I ain't reading that whole thing lol
23:31:24  <joepie91>gajus: does slonik include an entire SQL parser?
23:31:46  <gajus>joepie91: it does not need to; user input is never interpolated into the query
23:31:53  <gajus>it is sent separately to PostgreSQL
23:32:01  <gajus>and there is _no way_ that user can inline it
23:32:23  <joepie91>gajus: then see above
23:32:46  <gajus>'noting here that parameterized values cannot be used everywhere in queries'
23:32:47  <gajus>such as?
23:33:04  <joepie91>anywhere they're not explicitly specified as valid by the SQL dialect in question, which varies by DB
23:33:07  * tkorequit (Ping timeout: 240 seconds)
23:33:11  <darkSeid_>ummm
23:33:16  <darkSeid_>that's a readme?
23:33:18  <joepie91>I believe that tables cannot be parameterized in most DBs including postgres
23:33:23  <joepie91>table names that is
23:34:19  <GreenJello>joepie91, wouldn't that be basically required for temporary tables?
23:35:09  <GreenJello>eh, maybe not in normal cases
23:35:11  <joepie91>(PSA: I'm approaching bedtime, so you won't get much more useful answers out of me tonight :P)
23:35:26  <joepie91>(also being frustrated by this what-seems-like-an-immutable.js-bug)
23:37:09  * carifquit (Ping timeout: 245 seconds)
23:37:46  * munsterbergquit (Quit: leaving)
23:39:13  * voidiojoined
23:39:21  * grawlinson|afkjoined
23:39:22  * deepy-joined
23:39:29  <tyteen4a03>I'm not aware of any RDBMS that allows parameterising table names
23:39:30  * Gustavo6056joined
23:40:38  * Kristine_joined
23:40:38  * Kristine_quit (Changing host)
23:40:38  * Kristine_joined
23:40:42  * rc0mbsjoined
23:40:44  * Blkt_joined
23:40:52  * maxxer_joined
23:40:53  * Gustavo6056quit (Remote host closed the connection)
23:40:56  * jarhaedjoined
23:41:19  * shoogz-joined
23:41:26  * Gustavo6056joined
23:41:31  * reverse_1ightjoined
23:41:47  * julianduquequit (Ping timeout: 240 seconds)
23:42:14  * znf_joined
23:42:21  * dnscat_joined
23:42:23  * badeball_joined
23:42:32  * polar1joined
23:42:39  <joepie91>found the bug
23:42:41  * mstruebi1joined
23:42:52  <joepie91>it is indeed sort of a bug in immutable.js
23:43:11  * Gustavo6046quit (Killed (wolfe.freenode.net (Nickname regained by services)))
23:43:11  * Gustavo6056changed nick to Gustavo6046
23:43:14  * ubuntuislovedquit (Quit: My MacBook has gone to sleep. ZZZzzz…)
23:43:24  * hamjoined
23:43:28  * dexterjoined
23:44:17  <joepie91>let FooBar = immutable.Record(immutable.Record({foo: "bar"})()); FooBar();
23:44:25  <joepie91>reliable produces a "too much recursion" error
23:44:34  * IvanBlagdanjoined
23:44:45  * hampart
23:44:49  <jarhaed>why is setImmediate used here? https://jsbin.com/wedunuwoxo/edit?js,console
23:44:51  <joepie91>reliably*
23:45:05  * jamesh34joined
23:45:11  * STRML_joined
23:45:13  * JZA-joined
23:45:13  * devjunkjoined
23:45:19  * spion_joined
23:45:24  <joepie91>not sure if that bugcase is conceptually valid code, but either way it should at least fail with a comprehensible error...
23:45:43  * afk|dbarrettjoined
23:45:49  <joepie91>guess tomorrow is bug-filing day
23:46:11  <jamesh34>Hello
23:46:33  * darkSeid_quit (*.net *.split)
23:46:33  * mappum_quit (*.net *.split)
23:46:33  * braapquit (*.net *.split)
23:46:33  * spionquit (*.net *.split)
23:46:33  * reverse_lightquit (*.net *.split)
23:46:33  * AAA_awrightquit (*.net *.split)
23:46:33  * shoogzquit (*.net *.split)
23:46:33  * igflaviusquit (*.net *.split)
23:46:33  * maciuszekquit (*.net *.split)
23:46:33  * Kimquit (*.net *.split)
23:46:33  * berkenquit (*.net *.split)
23:46:33  * asilluron__quit (*.net *.split)
23:46:33  * znfquit (*.net *.split)
23:46:33  * rcombsquit (*.net *.split)
23:46:33  * nem8quit (*.net *.split)
23:46:33  * noahmg123quit (*.net *.split)
23:46:33  * jhfordquit (*.net *.split)
23:46:33  * mstruebingquit (*.net *.split)
23:46:33  * systemfaultquit (*.net *.split)
23:46:33  * McKayquit (*.net *.split)
23:46:33  * Thurienquit (*.net *.split)
23:46:33  * discopatrickquit (*.net *.split)
23:46:33  * Raynosquit (*.net *.split)
23:46:33  * SyntaxTerrorquit (*.net *.split)
23:46:33  * alextesquit (*.net *.split)
23:46:33  * merpnderpquit (*.net *.split)
23:46:33  * badeballquit (*.net *.split)
23:46:33  * devsnekquit (*.net *.split)
23:46:33  * iovoidquit (*.net *.split)
23:46:33  * TimothyGuquit (*.net *.split)
23:46:33  * monokromequit (*.net *.split)
23:46:33  * tobiequit (*.net *.split)
23:46:33  * deepyquit (*.net *.split)
23:46:33  * Blktquit (*.net *.split)
23:46:33  * heyimwillquit (*.net *.split)
23:46:33  * yorickquit (*.net *.split)
23:46:33  * herme5quit (*.net *.split)
23:46:33  * dbarrettquit (*.net *.split)
23:46:33  * IvanBlagdan_quit (*.net *.split)
23:46:33  * jgowdyquit (*.net *.split)
23:46:33  * grawlinsonquit (*.net *.split)
23:46:33  * Kristinequit (*.net *.split)
23:46:33  * EvilWerezombiequit (*.net *.split)
23:46:33  * STRMLquit (*.net *.split)
23:46:33  * tom2quit (*.net *.split)
23:46:33  * JZAquit (*.net *.split)
23:46:33  * BridgeARquit (*.net *.split)
23:46:33  * maxxerquit (*.net *.split)
23:46:33  * srish_aka_tuxquit (*.net *.split)
23:46:33  * zkatquit (*.net *.split)
23:46:33  * orangemocha__quit (*.net *.split)
23:46:33  * cspotcodequit (*.net *.split)
23:46:33  * drupolquit (*.net *.split)
23:46:33  * prettymuchbrycequit (*.net *.split)
23:46:33  * dnscatquit (*.net *.split)
23:46:33  * rashkovquit (*.net *.split)
23:46:33  * xeetzerquit (*.net *.split)
23:46:33  * benglquit (*.net *.split)
23:46:33  * vcanalesquit (*.net *.split)
23:46:33  * dexterfooquit (*.net *.split)
23:46:33  * ggherdovquit (*.net *.split)
23:46:33  * cdalquit (*.net *.split)
23:46:34  * grawlinson|afkchanged nick to grawlinson
23:46:35  * znf_changed nick to znf
23:46:36  * afk|dbarrettchanged nick to dbarrett
23:46:40  * dbarrettquit (Changing host)
23:46:40  * dbarrettjoined
23:46:40  * AAA_awright_joined
23:46:53  <jamesh34>Is this the right place to ask node/npm questions?
23:47:26  * xeetzerjoined
23:47:27  * BridgeAR2joined
23:47:27  * lord|quit (Quit: WeeChat 2.3)
23:47:31  <joepie91>jamesh34: yep
23:47:54  <jamesh34>thanks, please bear with me I have basically no experience with this
23:48:51  * ghormoonquit (Ping timeout: 246 seconds)
23:48:51  * Kkiroquit (Ping timeout: 246 seconds)
23:48:54  <jamesh34>i'm trying to run an application that requires node, npm, grunt, and bower
23:49:02  <jamesh34>https://github.com/Hypercubed/connectome/
23:49:19  <jamesh34>i think i've correctly installed all of them, but very unfamiliar with how to proceed
23:49:32  <ljharb>O.o bower? in 2016?
23:49:45  * Kkirojoined
23:49:45  * Kkiroquit (Changing host)
23:49:45  * Kkirojoined
23:49:50  * lord|joined
23:49:55  * kakashiALjoined
23:50:09  <joepie91>jamesh34: the instructions here should be sufficient: https://github.com/Hypercubed/connectome/#download-and-install
23:50:10  * jlippsquit (Quit: My comp has gone to sleep. ZZZzzz…)
23:50:11  <jarhaed>O_o
23:51:16  <DeltaHeavy>Also Grunt...it dead...with Bower
23:51:42  * ghormoonjoined
23:51:44  <jamesh34>i'm on windows, do i need to switch to a different os?
23:51:48  <DeltaHeavy>No
23:52:02  <DeltaHeavy>I'd recommend using npm + a module bundler like Webpack instead of Bower.
23:52:20  <joepie91>DeltaHeavy: not relevant here most likely
23:52:30  <DeltaHeavy>Oh wait
23:52:33  <DeltaHeavy>This is a finished application you're right
23:52:34  <joepie91>seems like a "run existing software" question
23:52:40  <DeltaHeavy>NEVERMIND ME
23:52:40  <jamesh34>yes, very much so
23:52:44  <DeltaHeavy>I'm fucking up all day today
23:52:54  * carifjoined
23:53:01  <jamesh34>i don't know where to run these commands basically
23:53:11  <jamesh34>manually i've installed node/npm/grunt/bower
23:53:20  <jamesh34>but err not sure how to proceed from there, sorry somewhat illiterate
23:53:27  <DeltaHeavy>What error?
23:53:32  <joepie91>jamesh34: ah, I am about to sleep so I don't have the time to go into detail now, but you'll probably want to install WSL
23:53:47  <joepie91>you'll have to enter the commands into a terminal, and installing WSL will give you a useful one
23:53:49  <joepie91>DeltaHeavy: ^
23:53:59  * AtumTquit (Quit: AtumT)
23:54:00  <DeltaHeavy>Yeah, if you're on Windows 10 WSL is a god send. Otherwise you can still get by without much fuss but WSL is nice
23:54:15  <jamesh34>i've tried entering the commands in cmd prompt, powershell, also the node.js terminal
23:54:20  <jamesh34>no luck there
23:54:34  * kakashiALquit (Ping timeout: 250 seconds)
23:54:59  <DeltaHeavy>jamesh34 We need the error, and also WSL is none of those.
23:56:21  <jamesh34>on entering into powershell: "git : The term 'git' is not recognized as the name of a cmdlet, function, script file, or operable program."
23:56:58  <DeltaHeavy>jamesh34 Are you on WIndows 10?
23:57:19  <jamesh34>server 2016 standard
23:57:39  <DeltaHeavy>Then you'll want this https://git-scm.com/
23:57:47  <DeltaHeavy>And that will come with a command line you can use as well.
23:57:54  <DeltaHeavy>Which I'd prefer over any other option you have.
23:59:44  <jamesh34>ok it looks like i can run the commands in the explanatory section now
23:59:54  <tyteen4a03>chocolatey may have a package for git