00:13:01  <substack>http://www.youtube.com/watch?v=-Djj6pfR9KU
00:18:07  * AvianFluquit (Quit: AvianFlu)
00:18:54  <dominictarr>paul erdos has been a huge inspiration to me.
00:20:11  <substack>Prelude> [ (m,n) | m <- [1..], n <- [1..m], (!) n + 1 == m ^ 2 ]
00:20:11  <substack>[(5,4),(11,5),(71,7)
00:20:30  <substack>I like how it just hangs after the first 3 which it finds immediately
00:20:45  <substack>and let (!) = product . takeWhile (>=1) . iterate pred
00:20:49  <substack>:p
00:23:26  <substack>haskell is where I learned the importance and power of composability
00:24:24  <substack>sort of crazy how I can remember that stuff from the prelude despite not having used it much for years
00:26:33  <dominictarr>yeah, functional style programming is interesting like that. either the pieces of the puzzle fit beautifully or not at all.
01:09:48  * AvianFlujoined
01:31:33  <guybrush>substack: i have issues with browserify watch, i did just added some simple console.log to investigate and i think w.reload is bugged - but i am not familiar at all how this concept works
01:32:13  <guybrush>are you aware of such a problem? is it worth for me to look deeper into it or do you have plans to solve this otherwise somehow
01:34:09  <guybrush>its just annoying as hell - maybe i should switch back to wreq for dev
01:39:37  <substack>yes browserify watch has issues
01:39:54  <guybrush>its like, sometimes it works - sometimes not
01:39:56  <substack>long-standing well-known issues
01:40:03  <substack>that need fixing
01:43:12  <guybrush>oh so you have already pinpointed the issue? just not sure how to solve it?
01:44:11  <guybrush>i tried to check out whats going wrong, but i think this would take me more than a few hours lol :p
01:46:46  <guybrush>well anyway since its a known problem i dont have to tinker arround, will go with wreq in dev for now
02:14:03  <guybrush>well i did some tinker, now i just process.exit() upon file-change and respawn browserify :DDD
02:14:16  <substack>that works!
02:14:17  <substack>https://github.com/substack/funstance
02:14:27  <substack>wrote this so tap can use it
02:14:43  <substack>except not yet since I need to polyfill first since I want to use this in old browsers
02:15:01  <guybrush>do you guys run tap in the browser?
02:15:05  <guybrush>i mean the node-tap api
02:15:16  <substack>the new testling ci does
02:15:18  <guybrush>well i guess you run testling :p
02:15:20  <guybrush>oh nice
02:15:35  <substack>it runs any test harness that outputs tap to process.stdout
02:29:03  * wiwilliaquit (Ping timeout: 240 seconds)
02:30:19  <maxogden>i just read the funstance readme and dont understand what it does
02:32:32  <substack>maxogden: funstance(obj) returns a function that acts like obj
02:32:39  <substack>except it's a function so you can call it
02:32:52  <substack>var f = funstance(obj)
02:33:01  <substack>f() works but also f.aThingThatObjCanDo()
02:34:27  <substack>like if I want to make it so that require('tap') acts like tap.test() without breaking any api
02:35:09  <substack>I could do module.exports = funstance(globalHarness, function () { return this.test.apply(this, arguments) }) inside of tap
02:35:14  <maxogden>arent functions already objects
02:35:26  <maxogden>or do you mean object prototype
02:35:53  <maxogden>oh
02:36:10  <substack>functions don't usually have a prototype chain
02:36:19  <maxogden>i get it, its just an obscure use case
02:36:20  <substack>but this lets them copy the prototype chain and properties from an object
02:36:30  <maxogden>coolio
02:39:15  <substack>it's pretty much an operator() kind of thing
02:39:20  <substack>for instances
03:39:34  <Raynos>substack: you cant do .call or .apply on funstances
03:39:45  <Raynos>substack: you need to inject Function.prototype in that proto chain somewhere
03:45:55  * AvianFluquit (Quit: AvianFlu)
03:46:31  <maxogden>substack: BOAT HACKING TOMORROW? lets get that baby in the water
03:50:39  <substack>yes sir
03:50:57  <guybrush>lol you built a boat?
03:51:09  <substack>s/built/found/
03:51:12  <guybrush>i want to see a picture of that thing!
03:51:26  <maxogden>there are many on my instagram
03:52:13  <substack>maxogden: do you have sealant?
03:52:22  <substack>caulk could work
03:52:23  <substack>and paint
03:53:00  <guybrush>nice! it looks like a dragon boat!
03:53:18  <guybrush>http://upload.wikimedia.org/wikipedia/commons/7/7a/Dragon_boat_budapest_2010.jpg
03:54:41  <maxogden>substack: wait sunday
03:54:50  <maxogden>substack: i thought tomorrow was sunday
04:10:52  <Raynos>oh hi
04:11:18  <Raynos>maxogden: Can I come and bring friends?
04:18:40  <maxogden>yea
04:25:09  <substack>Raynos: fixed call and apply
04:25:59  <Raynos>substack: ...
04:26:21  <Raynos>substack: If your going to hard code things also hard code bind
04:26:29  <substack>orite
04:26:52  <substack>I could just merge Function.prototype
04:27:00  <Raynos>substack: and toString
04:31:28  <Raynos>blargh
04:31:36  <Raynos>how do I refactor `row instanceof Row`
04:33:21  * wiwilliajoined
04:33:31  <substack>Row.isRow
04:34:05  <substack>which could just look for the presence of properties
04:36:18  <Raynos>Well
04:36:26  <Raynos>I went for row.__isRow__ >_>
04:37:18  <substack>lame
04:37:27  <Raynos>yeah
04:37:30  <Raynos>I wrote Row.isRow
04:38:08  <substack>Row.isRow = function (r) { return r.x !== undefined && r.y !== undefined }
04:38:28  <substack>or whatever properties you have
04:39:12  <substack>or just check the functions that you need to call
04:50:06  <Raynos>substack: did that :)
05:06:35  * wiwilliaquit (Ping timeout: 240 seconds)
05:33:38  * purrjoined
05:34:10  <substack>oh neat https://twitter.com/codylindley/status/240215658057568257
06:10:40  * idletomquit (Ping timeout: 264 seconds)
06:32:20  <Raynos>dominictarr: seq is a clusterfuck
06:32:36  <Raynos>dominictarr: well it's mostly set's fault
06:36:39  * timoxleyjoined
06:38:56  <substack>jesusabdullah: erdös superhero
06:39:18  <substack>incapable of tying shoes, driving cars, and slicing fruit
06:39:31  <substack>but capable of writing thousands of mathematical proofs
06:39:56  <substack>powered by amphetamines like how superman is powered by the sun
06:41:25  <substack>and since he can't tie shoes or drive cars or slice fruit and was homeless the problems posed in the episodes would all revolve around those things
06:47:03  <Raynos>dominictarr: Making crdt.Row a delta and not breaking crdt was hard. Pull it in for great justice
07:00:37  <jesusabdullah>nice
07:04:24  <maxogden>http://www.youtube.com/watch?v=jd_c0JHbflI
07:04:30  <maxogden>substack: you should make videos like that
07:10:02  <Raynos>maxogden: that is most excellent
07:35:12  <substack>maxogden: I'm more in a position to make stuff like http://www.youtube.com/watch?v=aeHlVo__Gmk
07:38:24  <substack>and http://www.youtube.com/watch?v=p7ELbHtgaoc
07:42:20  <Raynos>substack: that's trippy
07:50:30  <substack>so the trippiest thing about https://en.wikipedia.org/wiki/Brocard%27s_problem is that it seems to hold for rational numbers using the gamma function plus one instead of factorial
07:50:56  <substack>or at least there's no immediate low-hanging fruit
08:10:00  <substack>crap because I need one for this erdös superhero sketch
09:16:59  <dominictarr>Raynos, I've heard that if you use prototypes then V8 can optimize better when you create lots of objects.
09:22:26  <dominictarr>substack, statistically speaking, what is the probability that a given conjucture is true if it's N cases have been tested and no counter example?
09:23:04  <dominictarr>(calibrate this with conjectures that where later proven or disproven)
09:24:01  <dominictarr>might be related to the complexity of the conjecture.
09:24:05  <substack>dominictarr: it's been tested up to 10^9
09:24:11  <substack>for all m and n
09:24:34  <dominictarr>yeah, but this is about the structure of mathematics
09:25:13  <substack>so what's really interesting about equations with factorial in them
09:25:30  <substack>is that you can use the gamma function to model the continuous space between the integers
09:25:48  <dominictarr>we must be able to make statistical claims about possible mathematical truths because otherwise mathematicians intuitions would be useless.
09:26:03  <substack>and the conjecture probably has something to do with: "It has been proved that is a transcendental number and algebraically independent of for any integer and each of the fractions = 1/6, 1/4, 1/3, 2/3, 3/4, and 5/6."
09:26:15  <substack>amusingly you can pick n = 1 or n = 0 and m = sqrt(2)
09:26:17  <substack>and it works
09:26:18  * dominictarrgoogles 'gamma function'
09:26:24  <substack>npm install gamma
09:26:36  <substack>https://en.wikipedia.org/wiki/Gamma_function
09:26:54  <substack>Γ(n) = (n-1)!
09:27:03  <substack>for all reals n
09:27:20  <substack>oh sweet it works on complex numbers too
09:28:24  <substack>craziest shit ever: Γ(0.5) = sqrt(π
09:28:30  <substack>)
09:29:24  <substack>PI WHAT ARE YOU DOING IN THE RESULTS OF RATIONAL NUMBER INPUTS TO THE GAMMA FUNCTION GET OUT OF THERE THAT IS JUST THE SPACE ON THE REAL AND COMPLEX PLANES BETWEEN FACTORIALS
09:29:25  <LOUDBOT>IF I DON'T COME HOME SMELLING LIKE STRIPPER FOR THE HOLIDAYS MY FOLKS ARE GOING TO THINK I HAVE "RECOVERED". UNACCEPTABLE.
09:30:52  <substack>dominictarr: I spent all evening looking for rational values of m and n that satisfy n!+1==m^2 and I couldn't find any!
09:31:13  <substack>even though that set is usually only specified for the integers
09:31:31  <substack>it's easy to find values with simple expressions in the reals though
09:31:45  <substack>numbers are weird
09:31:48  <dominictarr>what if you use a different constant.
09:32:04  <dominictarr>n!+5 ==m^2
09:32:05  <dominictarr>?
09:33:34  <substack>for 2 there's (n,n)
09:34:23  <substack>er (2,2)
09:35:38  <substack>which seems wrong
09:35:46  <substack>2*1+1 = 3
09:36:03  <substack>oh hah right 2*1+2 = 4 = 2²
09:36:18  <substack>for +3, (2,1), (3,3)
09:37:13  <dominictarr>but how many solutions of n! + c = m^2
09:37:21  <dominictarr>are there for a given c?
09:37:27  <substack>probably finitely many
09:37:33  <substack>for positive integers c
09:37:46  <substack>factorial grows much faster than ^2
09:39:18  <substack>var gamma = require('gamma'); for (var c = 0;; c++) for (var m = 1; m < 1000; m += 1) { for (var n = 1; n <= m; n ++) { if (Math.abs(m-Math.sqrt(gamma(n+1)+c)) < 0.0000001) console.dir([c,m,n]) } }
09:39:33  <substack>(3,3,3) is a neat solution
09:39:43  <dominictarr>but it's not that it grows faster
09:39:59  <dominictarr>it's that it doesn't come close to the square
09:40:10  <substack>oh right actually there are probably infinitely many since you can just grow c to fill in whatever gap there is
09:40:23  <dominictarr>because you can just have a arbitarly large sq
09:40:42  <dominictarr>but what about a _particular_ c?
09:41:07  <dominictarr>I'm guessing each value of c should only have a very small number
09:41:30  <substack>seems that way
09:45:38  <dominictarr>I wonder what the distribution is though
09:47:52  <substack>anyways all I need for this erdos sketch I wrote is (1,sqrt(2))
09:48:16  <dominictarr>(1,sqrt(2)) ?
09:48:36  <substack>n=1, m=sqrt(2)
09:48:54  <substack>1!+1=sqrt(2)^2
09:50:21  <dominictarr>haha, and erdos calls "god" the "supreme facist"
09:50:36  <substack>the villain has a death ray that can only be aborted by giving a tuple that satisfies n!+1=m^2 and is not (5,4), (11,5), or (71,7)
09:51:00  <substack>but that villain forgot to specify that m and n need be integers
09:51:44  <substack>(erdos conjectured only 3 such tuples exist)
10:02:42  <tanepiper>finally playing with smartos
10:03:04  <guybrush>tanepiper: first impressions?
10:10:47  <tanepiper>seems good! our sysops guy raves about it at work, we're moving to all smartos
10:12:53  <tanepiper>seems like a *lot* of manual config though
10:13:16  <tanepiper>and already i need to keep a spreadsheet so i know which systems i have created, as they are all big uuids
10:19:45  <dominictarr>yeah, smartos is really slick.
10:20:22  <dominictarr>even when it's not working and you don't know why
10:20:34  <dominictarr>it still feels like it's well designed
10:29:11  <dominictarr>substack, Γ(0.5) = sqrt(π) -> crazy is just coincidence. I but stuff like that just happen all the time.
10:29:50  <dominictarr>like, one time, I was looking for a emergency job -- washing dishes -- and so I cold called all the cafe's in town
10:30:37  <dominictarr>or rather, I was going to call all the cafes, but the very first one I rang, I got someone who was in my class in highschool.
10:31:06  <dominictarr>(hadn't had any contact in ten years though)
10:31:29  <dominictarr>and now he was opening a resturant and needed a dish washer.
10:32:30  <dominictarr>of course there was a chain of causality that led to me making that call, and him answering it
10:32:51  <dominictarr>but if it hadn't happened, something else weird could have.
10:33:01  <dominictarr>and i'd be telling a different story.
10:34:04  <dominictarr>any complex system will seem to have strange coincidences.
10:53:09  <dominictarr>oh watch out substack, http://www.google.com/patents/US5946647
10:53:17  <dominictarr>apple will sue you
10:54:46  <dominictarr>are you using a computer to detect and perform actions on structures detected in computer data?
10:54:56  <dominictarr>if you are you are in big trouble.
10:59:02  <dools>right. so if you have a terminal application which enables you to click on a URL, you're infringing that patent
10:59:10  <dools>utterly ridiculous
11:01:30  <dominictarr>it sounds pretty 'obvious'
11:01:32  <dominictarr>to me
11:02:03  <dominictarr>yeah, a server has to use a parser to detect a structure, then display that to a user.
11:02:25  <dominictarr>so... you've gotta have a form post or query args or json or something.
11:08:50  <substack>this episodic internet scifi is so good http://www.youtube.com/watch?v=oBftzMxDtIg
11:09:46  <substack>or rather, http://www.youtube.com/watch?v=oBftzMxDtIg&feature=BFa&list=PL168F329FADED6741 for the playlistified version
12:13:41  * dominictarrquit (Ping timeout: 246 seconds)
12:24:28  * timoxleyquit (Ping timeout: 264 seconds)
12:27:11  * timoxleyjoined
13:05:12  * timoxleyquit (Quit: Computer has gone to sleep.)
16:01:12  * idletomjoined
18:08:24  <Raynos>dominictarr: Correct, prototypes are a lot faster
18:08:33  <Raynos>And I guess crdt should want to use prototypes
18:08:38  <Raynos>since it's going to have a lot of Rows
18:08:40  <Raynos>Gah.
18:09:06  <Raynos>dominictarr: I'll accept a PR for prototypes in delta-stream :D
18:10:09  * stlsaintquit (Quit: leaving)
18:10:46  * stlsaintjoined
18:18:23  * stlsaintquit (Quit: leaving)
18:22:09  * idletomquit (Ping timeout: 246 seconds)
18:26:41  * wiwilliajoined
18:31:52  * dominictarrjoined
18:39:46  <dominictarr>hey I need a name for something like graph-stream except it does time-series.
18:42:19  <dominictarr>but it's also gonna do more, potentially
18:42:32  <dominictarr>it's a preconfigured dash board really...
18:42:53  <dominictarr>with stock ticker like graphs
18:49:26  * wiwilliaquit (Ping timeout: 244 seconds)
18:57:34  * dominictarrquit (Read error: Connection reset by peer)
19:01:27  * dominictarrjoined
19:01:40  <dominictarr>new module: http://npm.im/hud
19:12:22  * stlsaintjoined
19:18:29  <substack>rad
19:39:28  <dominictarr>substack, it's actually quite a good example of using shoe/reconnect/mux-demux
19:40:10  <dominictarr>the code is really short, and the server pushes the streams to the client, which is interesting and unusual.
19:45:36  <dominictarr>worth reading: http://www.nytimes.com/2012/08/26/magazine/from-bible-belt-pastor-to-atheist-leader.html?pagewanted=1&_r=1
20:11:41  * AvianFlujoined
21:24:27  <substack>dominictarr: people get really weird when it comes to that stuff
21:25:02  <substack>as if holding a different conclusion about some proposition is an affront to their own conclusion
21:25:31  <dominictarr>yeah, that is what seems weird to me about the 'athiest movement'
21:25:54  <dominictarr>can't you just be an athiest with out wanting to ram it down other people's throats.
21:26:06  <dominictarr>this guy is an interesting take on it though
21:32:39  <substack>http://www.youtube.com/watch?v=dygQrX8FI3Q
21:33:58  <dominictarr>they should distill their own moonshine
21:34:25  <substack>just like george washington used to make
21:58:00  <chapel>dominictarr: the goal isn't to ram it down other peoples throat, it is to educate that atheism is good, where as a lot of religious people look at atheists as bad people
21:58:51  <dominictarr>chapel, yeah, that is what it should be like.
21:59:13  <dominictarr>sometimes it doesn't come out that way.
21:59:41  <dominictarr>it's like just a huge bikeshed.
21:59:46  <chapel>sure, but the opposite is more times more egregious
21:59:57  <chapel>not that it justifies anything
22:00:11  <dominictarr>egregious?
22:00:37  <chapel>questioning choice of word, or definition?
22:00:54  <dominictarr>definition
22:01:38  <chapel>egregious |iˈgrējəs|
22:01:38  <chapel>adjective
22:01:38  <chapel>1 outstandingly bad; shocking: egregious abuses of copyright.
22:04:49  <tanepiper>http://tinynodes.com/
22:05:06  <dominictarr>chapel, and what 'opposite' are you talking about? opposite of athiest movement?
22:05:13  <chapel>well
22:05:17  <chapel>bad choice there
22:05:30  <substack>tanepiper: +1
22:05:35  <substack>also +1 for dalekMP
22:05:39  <dominictarr>tanepiper, wow ! too much text
22:05:50  <chapel>pick any vocal theist group I guess
22:06:14  <tanepiper>dominictarr: yea :)
22:06:18  <tanepiper>it's phase 1
22:06:25  <tanepiper>SEO GOODNESS
22:06:26  <LOUDBOT>I AR IN YOAR IRC, ASKIN T ASK QWESJUNZ.
22:06:40  <dominictarr>tanepiper, oh right.
22:06:53  <substack>tanepiper: probably this could be reworded " your application is developed with individual components in mind that can speak to each other"
22:07:00  <substack>didn't parse correctly the first time I read it
22:07:20  <dominictarr>just tighten the width a bit, it should only be 10-15 words to a line, like an a paperback.
22:07:28  <tanepiper>i plan to make it less wordy, and have a blog on it as well with a post at least once a month - i have some stuff queued up in evernote
22:07:46  <tanepiper>dominictarr: yea, it's my lazyness using bootstrap :p
22:08:43  <dominictarr>I read quite a good blog post about laying out text correctly once and since then too wide pages just annoy me.
22:08:50  <substack>less words takes effort
22:09:45  <substack>Je n'ai fait celle-ci plus longue que parce que je n'ai pas eu le loisir de la faire plus courte.
22:10:11  <tanepiper>dominictarr: refresh it
22:10:16  <dominictarr>it does, but just a second pass is totally worth it
22:10:43  <dominictarr>tanepiper, now you look pro
22:12:13  <tanepiper>logo sucks, but i threw it together in about 10 minutes in pixelmator
22:12:14  <dominictarr>tanepiper, some white space at the bottom, before the footer
22:13:30  <dominictarr>tanepiper, you need a subtle gradient too
22:14:38  <tanepiper>on the whole thing?
22:16:54  <dominictarr>just something to give it a little depth,
22:17:14  <dominictarr>you nearly never have a perfect flat white in RL
22:17:41  <dominictarr>maybe just at the top, it depends
22:19:31  <tanepiper>what about now?
22:21:17  <tanepiper>substack: on the wording, yea - i need to copywrite it a little better
22:21:39  <dominictarr>thats good
22:22:19  <dominictarr>tanepiper, you just need to break it up into shorter setences
22:22:36  <dominictarr>like your opening paragraph: Traditional web application development on any scale can lead to an array of problems leading to large code bases that become harder to debug, maintain and improve over time.
22:22:51  <dominictarr>it's just one long setence
22:25:53  <dominictarr>you could put it differently: 'as an application grows, it can become difficult to improve, because it's own complexity gets in the wap'
22:25:55  <tanepiper>yea, re-structured it a little
22:26:35  <dominictarr>aha, our old friend the full stop
22:27:17  <dominictarr>'Large code bases that become ....' delete "that"
22:28:43  <dominictarr>then it will read as it's own setence better
22:29:34  <tanepiper>indeed :) I probably should have written this out a little before instead of just throwing it into the jade doc :p
22:29:48  <dominictarr>"Every part of your application is designed as it's own service that isn't tied to any specific part of the system."
22:29:55  <dominictarr>split that into two
22:30:15  <dominictarr>"..service. It isn't... "
22:31:13  <dominictarr>s/websocket based/streaming/
22:31:26  <dominictarr>"Web front-ends don't need to be tied to the database - they can instead call RESTful or websocket based services that can live anywhere in the network and make requests to obtain data - your own, or from third-party services."
22:33:53  <tanepiper>http://cdn.memegenerator.net/instances/400x/21590462.jpg
22:34:52  <dominictarr>"Web front-ends don't need to be tied to the database. they call RESTful or streaming services that live elsewhere on the network, or to third party services"
22:35:29  <dominictarr>hmm,
22:35:42  <dominictarr>"Web front-ends don't need to be tied to the database. they call RESTful or streaming services that live elsewhere on the network, or even third party services"
22:35:53  <dominictarr>fresh eyes make a big difference
22:36:13  <dominictarr>that is why the writers say "write drunk, edit sober"
22:36:32  <dominictarr>I'm guessing that you wrote this sober.
22:36:38  <dominictarr>...
22:36:42  <tanepiper>yes :)
22:36:45  <dominictarr>TIME TO GET DRUNK!!!
22:36:49  <tanepiper>and i'm going to have a whisky now :p
22:37:02  <dominictarr>cool, I'm getting a beer
22:45:47  <substack>I should get some beer
22:45:55  <substack>and write electronic music
22:46:11  <substack>for that erdos adventure sketch I wrote
22:46:17  <substack>then I'll animate it later
22:51:06  <dominictarr>substack, that is exactly what I'm about to do.
22:51:27  <substack>writing at erdos adventure sketch with electronic music?
22:51:31  <dominictarr>bty what does the t parameter in baudio mean?
22:51:33  <dominictarr>seconds?
22:51:38  <dominictarr>miliseconds
22:51:50  <dominictarr>just the electronic music part.
22:52:39  <substack>seconds
22:52:44  <substack>and the second param is a counter
22:53:43  <substack>oh whoa the improved version of baudio with separate channel support isn't even on npm yet
22:53:59  <substack>I should publish it
22:55:15  <dominictarr>right so if I want a given frequency, say 440hz (A)
22:55:57  <dominictarr>then Math.sin(t * Math.PI * 440)
22:55:58  <substack>you could have a sine wave with a period of 1/440 seconds
22:59:27  <substack>probably t / 440
23:01:51  <substack>oh wait * 440 makes sense
23:01:59  <substack>since it should whip around faster
23:07:30  <substack>also figured out how to make some of the clipping sounds go away with Math.{max,min}
23:10:55  <dominictarr>hmm, I think something is wrong
23:11:14  <dominictarr> return sin(t, 220 + (sin(t, 0.5) * 55) )
23:11:33  <dominictarr>should make a sin wave that goes up and down
23:11:52  <substack>2-parameter sin()?
23:11:52  <dominictarr>function sin(t, freq) {
23:11:53  <dominictarr> return Math.sin(t * Math.PI * freq)
23:11:53  <dominictarr>}
23:15:40  <dominictarr>okay... got a square wave lfo working
23:20:10  <substack>hmm so the bitrate also seems to matter
23:24:36  <substack>fiddling with the options
23:26:50  <substack>ok got recorded output sounding the same
23:38:40  <dominictarr>I'm getting a weird thing where the pitch is rising
23:38:47  <dominictarr>maybe a floating point error?
23:39:10  <substack>dominictarr: npm install [email protected]
23:39:58  <substack>I'll put some baudio examples in the stream handbook too :D
23:40:02  <substack>audio is a great thing for streams
23:40:12  <substack>because you can .pipe() to something to record and .pipe() to another thing that plays
23:40:23  <substack>or .pipe() to a third thing that feeds back
23:41:16  <dominictarr>that sounds much better
23:41:19  <dominictarr>still weird
23:41:22  <dominictarr>but cool
23:41:58  <dominictarr>it's really a testament to V8 that we can even do this in a dynamic language.
23:42:30  <substack>it's not very many bytes to shuffle around
23:42:51  <substack>ancient systems could do this stuff on 8 mHz motorolla processors
23:50:21  <dominictarr>hmm, need an ossiciloscope