<
devyn>
lol whitequark
<
devyn>
sorry, can't really do much until the weekend
yorick has quit [Remote host closed the connection]
<
whitequark>
devyn: oh, hm
<
whitequark>
but today is saturday?
<
whitequark>
oh, timezones
fwg has quit [Ping timeout: 246 seconds]
alextgordon has quit [Quit: My iMac has gone to sleep. ZZZzzz…]
<
devyn>
whitequark: Saturday is 2h30m away for me
<
devyn>
and that doesn't really count
<
whitequark>
doesn't count as in?
<
whitequark>
as weekend?
<
devyn>
as in... I'd like to sleep first
<
whitequark>
ah, sure
<
devyn>
I'm dead tired but I've got more work to do
<
whitequark>
I'm writing a JSON timeline for storing big amounts of data indexed by monotonic keys
<
devyn>
for storing the trade history?
<
whitequark>
the idea is, you can capture whatever data you need, and then both test your algorithms on captured data or feed them live data
<
whitequark>
that too
<
whitequark>
it's just plain JSON, for interoperability, one object per line, plus a separate mmapped binary index
<
devyn>
really would be nice if the API had a ?since=tradeid option or something
<
whitequark>
btc-e api?
<
whitequark>
meh doesn't matter, I can just hammer it and filter the data
<
whitequark>
cloudflare doesn't seem to object up to ~50req/s at least
<
whitequark>
mtgox has a websocket endpoint for trade and orderbook changes
<
devyn>
well, I might as well check out what you've done quickly
<
whitequark>
I've also added documentation generator and documented all my code
<
whitequark>
$ make doc
<
whitequark>
devyn: does it make sense to capture market depth data as well? is it used by algorithms?
<
devyn>
I don't know how much that really helps for bitcoin and altcoin
<
whitequark>
ok, then not yet
<
devyn>
yeah we can do that later and see whether it helps
<
whitequark>
after the timeline I'll probably write a graph widget integrated with the rest of the bot
<
devyn>
FYI I'd like to be able to have a simulation mode for testing
<
whitequark>
yes, simulation is absolutely planned
<
whitequark>
as I've said
<
whitequark>
all algorithms will just receive streams of timestamped data
<
whitequark>
they have no clue whether it's actual or archived or even generated
<
devyn>
litecoin is really impressive btw
<
whitequark>
I'm not sure how one could even try to write such a bot without simulation mode
<
whitequark>
may as well just go and burn money
<
devyn>
it's still high up
<
whitequark>
and wonder
<
devyn>
this site is more useful imo
<
devyn>
that summary view
<
devyn>
maybe I should have dipped into primecoin a bit
<
devyn>
up 55.9441% in the last 12 hours
<
devyn>
not primecoin
<
whitequark>
btc-e added ppc/usd pair
<
whitequark>
about 12 hours ago lol
<
whitequark>
9:30 rather
<
devyn>
ah that would probably explain it
<
whitequark>
I'm skeptical about other altcoins
<
whitequark>
even with litecoin you cannot really use it yet (but probably soon you could)
<
whitequark>
others are even more pure speculation at this moment
<
devyn>
not to mention most of the others don't really have anything neat about them
<
whitequark>
yeah it's amazing how much pointless coins there are
<
whitequark>
there are a few neat ideas but even with those, it's far from clear
<
whitequark>
PoS is interesting
<
devyn>
hell, feathercoin, which the trollbox is crazy about, is just some internal use coin for this online shopping website
<
joelteon>
litecoin, feathercoin, bantamcoin, heliumcoin
<
whitequark>
which online shopping website?
<
devyn>
basically classifieds with their own cryptocoin
<
devyn>
also because the feathercoin jumped so much
<
devyn>
those listings are way
<
devyn>
mens socks for $84.36 haha
<
devyn>
a 7950 for $9,278.68
<
devyn>
OH MY GOD THIS HAHAHAHAHA
<
devyn>
okay so it's more like ebay
<
devyn>
with its own cryptocoin
<
whitequark>
fifth largest cryptocurrency, sigh
<
devyn>
basically if it's on BTC-e it's going to be traded
<
devyn>
ridiculously
<
whitequark>
yeah I was surprised to learn that btc-e is the largest exchange by volume
<
devyn>
people aren't trusting mt. gox as much, and then BTC-e has way more options due to the sheer number of altcoins it has
<
devyn>
honestly we should probably look at trading more than just one currency pair at a time
<
devyn>
monitor everything >:D
<
whitequark>
of course
<
devyn>
oh except the ruble ones because those have higher fees
<
whitequark>
why not more than one exchange? I'm designing everything to be modular :3
<
purr>
Let it be known that devyn hearts FP.
<
whitequark>
btw only ever compile this on 64-bit systems
<
whitequark>
I'm not checking for int overflow
<
whitequark>
and generally abusing mmap
<
joelteon>
i did that once
<
joelteon>
was wondering why my threadDelay calls kept taking 0 ms
<
whitequark>
devyn: ok so I'm thinking
<
whitequark>
worth it writing my own graph widget?
<
whitequark>
so you could overlay algorithm data over it
<
whitequark>
or actually view whatever the bot is observing instead of some website
<
devyn>
could be useful, yeah, if it showed when and why the bot was making decisions, too
<
devyn>
I'd be happy to help with the browser-side stuff
<
devyn>
make it look really neat
<
whitequark>
browser-side? to hell with the browser
<
whitequark>
I'll just do it in native widgets
<
devyn>
and what happens when I want to run it on a headless server
<
whitequark>
the control part is independent from bot part, of course
<
whitequark>
that's trivial to add: it just streams events
<
devyn>
it would be easier to just do it with a web browser and an HTTP server serving some static resources that read an event stream
<
whitequark>
you'd need to read an event stream anyway ;)
<
whitequark>
yeah I know, irclogger uses that
<
whitequark>
I mean, it's about same complexity on the network level
<
whitequark>
but drawing pretty graphs in browser is a giant fuck-you
<
devyn>
yeah, but you can open a web browser anywhere
<
devyn>
on anyone's system
<
whitequark>
or you could use canvas and then it's exactly equivalent to
<
devyn>
use <canvas>
<
devyn>
the only reason it's ever a giant fuck you is because people want IE compatibility
<
devyn>
we don't care about that
<
whitequark>
ok makes sense
<
devyn>
is novacoin seriously third largest now?
<
whitequark>
seems so
niggler has joined #elliottcable
<
cuttle>
devyn: which two painkillers are used more often
<
devyn>
cuttle: alcohol and fists
<
whitequark>
ok rewrote timeline and store with functors
<
devyn>
whitequark: looks like BTC-e is releasing a websocket API soon
<
whitequark>
devyn: oh cool
<
whitequark>
I can use that too :3
<
devyn>
lol there are people spamming this quarkcoin shit
<
whitequark>
quarkcoin!
<
devyn>
"it's so fast you can actually use it in a shop setting"
<
devyn>
"it's gonna skyrocket!"
<
devyn>
lol apparently it halves reward every three weeks
<
devyn>
definitely a scamcoin
<
whitequark>
btc-e drinking game: drink every time someone says "X to the moon"
<
whitequark>
drink twice if at the same time someone else says "X is going to crash"
<
whitequark>
that is the whole point
<
whitequark>
it's a metaphor for the perils of speculation.
<
devyn>
I bought some FTC because all of this trolling is bound to lead to /something/
<
whitequark>
congrats, trollbox just outsmarted you :p
<
devyn>
I'm betting that they're going to outsmart other people too
<
devyn>
it is rising
<
devyn>
and I needed somewhere to go, since BTC and LTC are both falling
<
devyn>
right, I have work to get done.
<
whitequark>
so you're a master of batman gambit :p
<
trolling>
I'm bound to lead to what?
<
devyn>
"FTC/BTC pair will not be delisted"
<
devyn>
did the trollbox make them do that?
<
devyn>
whitequark: jesus that was actually a good decision
<
whitequark>
was it?
<
devyn>
yeah people are totally jumping on the FTC train
<
devyn>
hahahahahahaha
<
devyn>
click the link
<
whitequark>
rickroll?
<
whitequark>
lol almost
<
devyn>
lechango: Guys, I've literally smoked over $500,000 in weed. Do you know how that feels?
eligrey has quit [Quit: Leaving]
<
cuttle>
devyn: whe
<
cuttle>
devyn: since that's
*literally* not possible in a lifetime, what joke are you making?
<
cuttle>
well, probably not literally...
<
cuttle>
whitequark: which kind of functors?
<
devyn>
cuttle: not me, someone on BTC-e trollbox
<
whitequark>
cuttle: (weed) he bought weed in btc. exchange rate changed since.
<
whitequark>
(functors) um, apparently the category theoretical ones
<
whitequark>
though I've no idea how they are really related
<
whitequark>
it's just ocaml's first class module system
<
cuttle>
devyn, whitequark: oh, btc exchange rate jokes :p
<
cuttle>
weed is really fucking cheap though
<
cuttle>
whitequark: ah ok
<
devyn>
well it's not exactly hard to get
<
cuttle>
whitequark: reflected in a different way than haskell's but yeah
<
cuttle>
devyn: well it's harder to get than alcohol but arguably cheaper
<
cuttle>
same re cigs
<
devyn>
lol honestly, if you're under 19 it's easier to get here than alcohol
<
devyn>
a lot easier
<
cuttle>
alcohol: know someone over 19 who will buy it for you
<
cuttle>
weed: find someone who knows someone
<
cuttle>
equally easy or harder for weed i'd say
<
devyn>
you don't have to find someone who knows someone
<
devyn>
"searching" part
<
devyn>
probably 1/3 of everyone you know here
<
devyn>
probably more, actually
<
cuttle>
idk, i don't live where you do
<
devyn>
well I do cuttle
<
cuttle>
but if i ask my friend to have his over-21 friend buy alcohol
<
cuttle>
or ask my friend to buy some weed
<
cuttle>
there's equal amounts of waiting and depending on other people
<
cuttle>
and i definitely know as many older siblings who will buy alcohol as i do people who have weed hookups
<
cuttle>
but maybe they're just total stoners up in canada
<
devyn>
well personally, alcohol is easy to get /for me/
<
devyn>
because my parents will just give it to me
<
whitequark>
wait devyn
<
whitequark>
you're not over 21
<
cuttle>
devyn: have you smoked?
<
devyn>
haha whitequark
<
devyn>
I don't feel like I could enjoy weed as much as a good drink
<
cuttle>
idk, having tried both, I feel the opposite
<
cuttle>
but I mean they're better for different things obviously
<
cuttle>
weed is better for small groups of closer friends, more low key things
<
cuttle>
alcohol livens up situations
<
devyn>
honestly I just like how alcohol tastes; I don't care about its effects
<
whitequark>
that's... pretty much the opposite of every person I asked ever
<
whitequark>
(some use it for physiological effects, some for the social ones... I had yet to meet someone who liked the taste)
<
devyn>
lol I like how it seems to dissolve in the air in your mouth if you breathe
<
devyn>
kinda tingly
<
cuttle>
really? the taste is the worst thing about alcohol
<
cuttle>
that's why people have drinking games and shots and shit
<
cuttle>
because it's fucking gross
<
devyn>
well then why do people drink scotch
<
devyn>
which tastes good
<
devyn>
and is mostly alcohol
<
whitequark>
>Alcohol by volume 40–94.8%
<
whitequark>
94.8% O_O
<
cuttle>
i haven't had scotch
<
cuttle>
maybe it's good
<
devyn>
maybe, he says :p
<
whitequark>
devyn: ok take a look at Timeline
<
whitequark>
I'm fucking proud of it
<
whitequark>
make test; ./timeline.d.byte
<
whitequark>
args: no args -- append some data
<
whitequark>
1 arg -- show data with provided id
<
whitequark>
2 args -- show a stream of data with ids from arg1 to arg2
<
whitequark>
look at tmp.json and tmp.json-index
<
whitequark>
relevant sources are storage/{timeline,binary_index.ml}*
<
devyn>
./test_timeline.d.byte 1 2
<
devyn>
does not appear to do that
<
devyn>
oh I see it's exclusive
<
devyn>
if you do 1 3
<
devyn>
it raises Not_found
<
whitequark>
yeah there's no data with id 3
<
whitequark>
it's deliberately generated sparse
<
devyn>
yeah I know
<
whitequark>
try 1 4
<
devyn>
kind of silly to select 1 4 to get 1 and 2
<
devyn>
probably should be an inclusive range
<
whitequark>
no, then comparing iterators gets funky
<
devyn>
whitequark: anyway, yeah, I'm 17
<
whitequark>
holy crap.
<
whitequark>
I thought you were like five years older than me
<
whitequark>
which would be
<
whitequark>
almost 26
<
devyn>
ELLIOTTCABLE likes the young boys
<
whitequark>
devyn: if there's no iterator state "one past the end of collection", you need a bunch of silly logic every time you try to iterate one
<
whitequark>
plus you lose the ability to have an empty stream
<
whitequark>
which may be important
<
devyn>
but this way your end index always has to be a valid index
<
devyn>
0000000: 0400 0000 0000 0000 6700 0000 0000 0000 ........g.......
<
devyn>
0000030: 0400 0000 0000 0000 3100 0000 0000 0000 ........1.......
<
devyn>
if this is structured how I think it is
<
devyn>
that seems to not make sense
<
whitequark>
first two fields are special
<
whitequark>
look in binary_index.ml, there's a handy ascii artsy description
<
whitequark>
(* Memory layout. Unit is int. | n | fsize | 0.key | 0.pos | 1.key | 1.pos | ... | n.key | n.pos | *)
<
whitequark>
fsize -- size of the data file
<
devyn>
whitequark: I guess it's not a big deal since it's possible to leave finish undefined
<
whitequark>
devyn: yeah, it defaults to end of file
<
cuttle>
c# has great iterators
<
cuttle>
well i guess as far as iterators go they aren't that great
<
cuttle>
they are there, and in unity
<
cuttle>
so how about that
<
cuttle>
so how about that 9:09:50 <+whitequark> wait devyn
<
cuttle>
9:09:53 <+whitequark> you're not over 21
<
cuttle>
9:10:02 <+whitequark> huh?!
<
devyn>
does whitequark know how old you are
<
cuttle>
whitequark: do you?
<
whitequark>
18 or 19 or something
<
devyn>
average age at the moment is somewhere around 20 I think
<
cuttle>
oh my god arrested development is incredible
<
devyn>
whitequark: alright, o/ on timeline.ml
<
whitequark>
okayyyyy so
<
whitequark>
I'll make an order gatherer for btc-e
<
whitequark>
... aaaand all my nice structure just crumbles
yorick has joined #elliottcable
<
whitequark>
argh, this is such a gigantic pain in the ass
<
whitequark>
fucking functors
<
whitequark>
fucking static typing
<
whitequark>
ok I've solved it
<
whitequark>
and also solved the problem of leaked source code
<
whitequark>
no one is going to understand the fuck of it anyway
<
whitequark>
it's clever, like
<
whitequark>
like C++ templates are clever
<
whitequark>
but this is cleverer
fwg has joined #elliottcable
<
whitequark>
no I've not
<
whitequark>
AAAAAAAAAAAAAAAAAA
* whitequark
throws his pc at the wall
<
whitequark>
ok I officially give up
<
whitequark>
on that type system shit
Sgeo has joined #elliottcable
Sgeo_ has quit [Ping timeout: 260 seconds]
sharkbot has quit [Remote host closed the connection]
sharkbot has joined #elliottcable
alextgordon has joined #elliottcable
<
whitequark>
devyn: make && LWT_LOG='Btc_e -> debug' ./trader.d.byte
<
whitequark>
wow, 6% cpu and 10MB RAM for a massively concurrent data collector written in a high-level language
<
whitequark>
it hammers 18 pairs as half as fast as it can, i.e. it schedules next collection after it finishes current one
fwg has quit [Ping timeout: 264 seconds]
<
alextgordon>
where IS everybody
<
alextgordon>
internet is properly dead today
fwg has joined #elliottcable
<
joelteon>
i'm here today
<
joelteon>
my warby parker home try on kit is here
<
whitequark>
race condition :/
<
whitequark>
hm so after a connection breaks, every request is off by one
<
whitequark>
fencepooooost
<
joelteon>
fence post
<
whitequark>
yay, nailed it
fwg has quit [Ping timeout: 240 seconds]
Sgeo_ has joined #elliottcable
Sgeo has quit [Ping timeout: 246 seconds]
fwg has joined #elliottcable
eligrey has joined #elliottcable
fwg has quit [Ping timeout: 265 seconds]
fwg has joined #elliottcable
<
yorickpeterse>
lol
sammcd_ is now known as sammcd
<
ELLIOTTCABLE>
fuckin' fuck, I'm a bad programmer.
<
alextgordon>
hi ELLIOTTCABLE
<
ELLIOTTCABLE>
hello, alex