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: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: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