Cyanure has quit [Remote host closed the connection]
rfg has joined #ocaml
fryguy has joined #ocaml
ymasory has quit [Quit: Leaving]
ymasory has joined #ocaml
vivanov has joined #ocaml
rfg has quit [Quit: rfg]
wagle has quit [Read error: Connection reset by peer]
wagle has joined #ocaml
mal`` has quit [Quit: ERC Version 5.3 (IRC client for Emacs)]
mal`` has joined #ocaml
mal`` has quit [Client Quit]
mal`` has joined #ocaml
joewilliams is now known as joewilliams_away
hto has quit [Quit: Lost terminal]
ymasory has quit [Quit: Leaving]
hto has joined #ocaml
ymasory has joined #ocaml
drunK has quit [Remote host closed the connection]
ymasory has quit [Quit: Leaving]
nannto_ has joined #ocaml
ymasory has joined #ocaml
kushou1 is now known as kushou
dnolen has joined #ocaml
dnolen has quit [Client Quit]
ankit9 has joined #ocaml
ymasory has quit [Quit: Leaving]
kushou has left #ocaml []
ikaros has joined #ocaml
ulfdoz has joined #ocaml
vivanov has quit [Quit: Lost terminal]
philtor has quit [Ping timeout: 260 seconds]
ftrvxmtrx has quit [Quit: This computer has gone to sleep]
philtor has joined #ocaml
ftrvxmtrx has joined #ocaml
Yoric has joined #ocaml
ygrek has joined #ocaml
vivanov has joined #ocaml
philtor has quit [Ping timeout: 240 seconds]
ocp has joined #ocaml
ftrvxmtrx has quit [Quit: This computer has gone to sleep]
Yoric has quit [Quit: Leaving.]
ygrek has quit [Ping timeout: 250 seconds]
edwin has joined #ocaml
dnolen has joined #ocaml
Yoric has joined #ocaml
jamii has joined #ocaml
ftrvxmtrx has joined #ocaml
edwin has quit [Remote host closed the connection]
edwin has joined #ocaml
larhat has joined #ocaml
ankit9 has quit [Quit: Leaving]
dnolen has quit [Quit: dnolen]
thomasga has joined #ocaml
ygrek has joined #ocaml
ankit9 has joined #ocaml
ygrek has quit [Ping timeout: 250 seconds]
avsm has joined #ocaml
edwin has quit [Remote host closed the connection]
oriba has joined #ocaml
oriba has left #ocaml []
Reaganomicon has quit [Read error: Connection reset by peer]
caligula__ has quit [Ping timeout: 276 seconds]
edwin has joined #ocaml
caligula__ has joined #ocaml
<gildor>
edwin: hi, I have noted your bug report about configure not executable
<edwin>
ok
<gildor>
edwin: this is #788
<edwin>
ah then my #980 is a dup
<gildor>
is f[x] = ygrek ?
<gildor>
edwin: yes, but this is good to remind me ;-)
<edwin>
and don't mind the /tmp stuff, lots of things break due to that not being executable
nannto_ has quit [Quit: Leaving...]
<edwin>
I can just remount it exec before running the tests
<gildor>
edwin: you can also export TMPDIR=/somewhere/else
<gildor>
before running the test
<edwin>
how is oasis-db coming along btw, will we be able to download a package and all its deps as a single tarball?
<gildor>
edwin: nope, you'll have to upload package by package
<gildor>
edwin: but with the CLI interface, it will be quite easy
<edwin>
ok, luckily most of oasis's deps are now in Debian :D
<gildor>
yes, I have uploaded them myself
<gildor>
same for godi
<edwin>
when do you plan the next release of oasis (or next beta). I would like to try it if my projects that use it still work, but I don't really have the time this week
<gildor>
edwin: oasis-db is my top priority this week, but I'll inject patches in oasis when they are needed by oasis-db, so maybe next week if there are enough changes this week
<edwin>
ok, that'll give me some time to test in the weekend
<gildor>
edwin: but the latest ~alpha1 should be 100% compatible with 0.2.0
<edwin>
will oasis-db be integrated with Debian in a manner similar to Perl's CPAN? (i.e. will we be able to build Debian packages out of packages on oasis-db automatically?)
<gildor>
edwin: ;-)
<edwin>
or for that matter, packages out of any tarball that has _oasis
<thelema>
-syntax sets a predicate for ocamlfind, similar to the "mt" predicate and 'byte'/'native'
<rixed_>
Still it complains: ocamlfind ocamldep -syntax camlp4o -package "batteries batteries.syntax bitstring bitstring.syntax" *.m
<rixed_>
gives: ocamlfind: No unique value for the META variable 'preprocessor': package camlp4 defines `camlp4', package bitstring.syntax defines `camlp4of'
<thelema>
try -syntax camlp4of
<rixed_>
same error :-/
<rixed_>
maybe batteries and bitstring use different syntaxes?
<rixed_>
or maybe the order matter?
* thelema
tries to look up the difference between camlp4o and camlp4of
<rixed_>
changing order in -package between batteries and bitstring merely change the order in the error message :)
<thelema>
well, it looks like batteries requires camlp4, but bitstring requres camlp4of
<thelema>
maybe you can't use both batteries syntax extensions with bitstring
* thelema
uses batteries (without syntax extensions) and bitstring
<thelema>
yup, it seems the two are incompatible
<rixed_>
thelema: Ok, I will then stop requiring batteries.syntax.
<rixed_>
I think I never used it, anyway :-)
<thelema>
incompatible at the findlib level - there's no fundamental incompatibility
<thelema>
I guess batteries could be adjusted to use camlp4of
<rixed_>
All this is too hairy for me.
<thelema>
for me too, which is why I keep my use of camlp4 to a minimum.
fryguy has left #ocaml []
<thelema>
it's all just a bit too unfriendly
sepp2k has joined #ocaml
<rixed_>
thelema: thank you, it compiles now. I'm trying to hack together a small packet generator.
<thelema>
glad to help
enthymeme has joined #ocaml
hto has quit [Quit: Lost terminal]
hto has joined #ocaml
spearalot has joined #ocaml
<rixed_>
I don't understand enums in batteries ; They are not persistant ? So for instance (BatEnum.take 10 foo) changes foo?
<thelema>
yes
<rixed_>
Why is it so?
<thelema>
otherwise thw following would hold on to unnecessary data:
<thelema>
let a = List.enum large_list in
<thelema>
let b = Set.of_enum a in ...
<thelema>
if enums were persistent, a would still hold a copy of the whole list
<rixed_>
until a gets garbage collected...
<thelema>
but in this example, a has the same scope as b
<thelema>
For another example, consider File.lines_of on a really large file
<thelema>
let a = File.lines_of "large_file.txt" in
<thelema>
let b = Enum.reduce (...) a in
<thelema>
with Enum, the lines of the file that have been read can be GC'ed as soon as they're processed by reduce
<thelema>
while if a was persistent, ocaml would be forced to keep the entirety of large_file in memory
<rixed_>
I understand, yet it make me sad to have to choose between iterators a la C++ and pure persistant lazy list ... ;'(
<thelema>
they're really two different things, and have to be treated as such.
<rixed_>
So Enums are iterators. Is there some persistant lazy list somewhere within batteries?
<thelema>
of course: LazyList and Seq.
<rixed_>
:-) !
<rixed_>
Gotta have a look
<rixed_>
And of course these are enums also. Nice, best of both world.
<thelema>
everything is enumerable, even characters
<hcarty>
thelema: I think Seq acts like Enum as far as GC-ability goes
<hcarty>
That's my understanding of the implementation at least
<thelema>
Actually, I thought that was the one difference between the two - that enums are consumable but seq isn't
<hcarty>
Seq isn't consumable, but any used elements can be GC'd
<hcarty>
So (I think?) you could do File.lines_of "large_file.txt" |> Seq.reduce ( ... ) with a Seq-based implementation
<hcarty>
I'm not sure it really makes sense with that example...
<thelema>
hmm, I thought that you could backtrack with seq
<hcarty>
The large_list example is probably better.
<hcarty>
You can't backtrack with marching through the sequence to the desired element
<hcarty>
From the start of the sequence
<thelema>
so the difference between enum and seq is that if you do seq.at k, you don't consume k elements?
<hcarty>
Correct
<thelema>
hmm...
<hcarty>
An imaginary let a = Seq.(1 -- 10) in Seq.iter print_int a; Seq.iter print_int a would print 1 through 10 twice
<hcarty>
If Seq.( -- ) were defined like the Enum equivalent
<thelema>
hmm, could Seq replace enum?
<thelema>
what would be the downside...
<hcarty>
Seq was slower (I don't remember how much) last time I checked
<hcarty>
File.lines_of could either be surprising in a good or bad way with Seq
<thelema>
well, I was thinking that the large list example would still be a problem for seq, as the whole large list would be kept in the Seq while it was being consumed
<hcarty>
I don't know how significant the speed differences are between Seq and Enum. I think I tested with something trivial like summing a large sequence of integers.
<hcarty>
I don't think the whole list would be kept in Seq
<hcarty>
Only the element currently being used is kept around
<hcarty>
The memory used would be the source list + a bit of Seq overhead
<thelema>
if the Seq cna be iterated through again, the whole list would be kept
<thelema>
yes, the original list.
<thelema>
whereas with enum, the original list can be destructured and GCed incrementally
<hcarty>
Can that actually be done?
<thelema>
with enum, it can
<hcarty>
I do think Enum should remain - it's a useful module
<hcarty>
Seq makes more sense/acts in a more expected manner when programming in a functional way
Yoric has joined #ocaml
<thelema>
Yoric: I vote for opa syntax #1
<Yoric>
thelema: #1 as in revised syntax #1?
<thelema>
if the biggest distinction between #1 and #2 is c-ish {} vs. python-ish indenting, #1 will get much better traction
<thelema>
yes, revised syntax #1
<hcarty>
thelema: http://vpaste.net/BSpWK? -- the speed difference between Seq and Enum may be negligible. s/Seq/Enum/ in that paste and the runtime doesn't really change on my system
krktz has joined #ocaml
<hcarty>
For a large n of 100000000 or so
lopexx has joined #ocaml
<hcarty>
And going with n = 500000000 puts Seq slightly ahead of Enum in speed
<Yoric>
thelema: thanks for the vote :)
<Yoric>
Other than that, how are you?
philtor has joined #ocaml
_andre has quit [Quit: leaving]
<thelema>
Yoric: not too bad. Don't get any concussions - they really interfere with concentrating
_andre has joined #ocaml
<Yoric>
thelema: what happened?
<thelema>
Aikido training - my head tried to intersect with a knee
<thelema>
I'm much better now, but I'm going to be extra careful with my head from now on, having learned that dain bramage is no fun
<thelema>
Yoric: how are you doing? Still very busy with opa, I see.
<Yoric>
Yeah, take care.
<thelema>
Batteries is dropping its camomile dependency.
<Yoric>
Indeed, I'm quite busy. I've been somehow promoted to Tech Evangelist, so I spend most time proselytizing, which is quite a change.
<Yoric>
Yes, I've read the discussion.
<Yoric>
Should make installation much easier.
<thelema>
My other project, odb, is doing a good job at that.
<Yoric>
afk
<thelema>
On unix systems at least, it'll download and install a package and its deps automatically
krktz_ has joined #ocaml
krktz_ has quit [Client Quit]
sepp2k has quit [Quit: Leaving.]
Snark has quit [Quit: Ex-Chat]
<Yoric>
thelema: sounds great :)
Anarchos has joined #ocaml
<thelema>
Yoric: the interesting thing is it's a single file, meant to be used "ocaml odb.ml [args]" and it depends on only ocaml and findlib
<adrien>
and on windows systems you can use yypkg's packages :P
ftrvxmtrx has quit [Read error: Connection reset by peer]
ftrvxmtrx has joined #ocaml
<adrien>
thelema: I was joking because there aren't packages for ocaml currently (actually, the biggest issue is that I can't cross-compile without patching the compiler, which I'll do at some point), and I've lacked time for yypkg and its packages but it should improve in less than 3 weeks
<thelema>
adrien: it would be very good to have packaging solutions for ocaml on generic unix and windows.
<thelema>
but if you don't have a windows box to work on, I worry about the quality of whatever you yypkg you build
lopex has quit []
lopexx has quit []
<adrien>
I have windows boxes (well virtual machines mostly, but not only) but it's *way* easier to build on linux
lopex has joined #ocaml
<thelema>
even without a cross compiler?
<adrien>
it's also much faster
<adrien>
=)
<adrien>
it's possible to get an ocaml cross-compiler but it takes some time if not on debian
<thelema>
adrien: is it easy to build a package from a tarball with an _oasis file?
<adrien>
thelema: not tried
<zorun>
and I think the first time an ocaml cross-compiler was packaged was on fedora
<adrien>
yeah, probably, several years ago I think
<adrien>
(maybe 2 ;-) )
zzz_ has joined #ocaml
shachaf_ has joined #ocaml
sgnb` has joined #ocaml
cizra2_ has joined #ocaml
ygrek has quit [Ping timeout: 250 seconds]
AdmWiggin has joined #ocaml
Lor_ has joined #ocaml
<Anarchos>
hi adrien
shachaf has quit [Disconnected by services]
shachaf_ is now known as shachaf
flx_ has joined #ocaml
dcolish` has joined #ocaml
<rixed_>
Hehe, now I can write: Http.pack1 (Http.Get ("google.com", "index.html")) |> Tcp.pack 1024 80 |> Ip.pack "192.168.1.1" "192.168.1.2" |> Eth.pack "00:01:02:03:04:05" "a0:b0:c0:d0:e0:f0" |> If.const_speed |> Pcap.pack "/tmp/opack.pcap"
jamii has quit [Ping timeout: 260 seconds]
flux has quit [Ping timeout: 260 seconds]
mcclurmc has quit [Ping timeout: 260 seconds]
zzz_` has quit [Ping timeout: 260 seconds]
adrien has quit [Ping timeout: 260 seconds]
Yoric has quit [Ping timeout: 260 seconds]
Tianon has quit [Ping timeout: 260 seconds]
sgnb has quit [Ping timeout: 260 seconds]
cizra2 has quit [Ping timeout: 260 seconds]
Lor has quit [Ping timeout: 260 seconds]
dcolish has quit [Ping timeout: 260 seconds]
jamii_ has joined #ocaml
<rixed_>
and I got a pcap file with the HTTP get :-)
flx_ is now known as flux
<thelema>
rixed_: random timestamps?
Yoric has joined #ocaml
<rixed_>
Nope, If.const_speed set timestamp according to if throughput
Associat0r has quit [Quit: Associat0r]
adrien has joined #ocaml
mcclurmc has joined #ocaml
<thelema>
really? that's nice.
<rixed_>
dream: rewrite scappy in ocaml so that it's fast enough to be useable :-)
<rixed_>
I needed a traffic generator for so long...
<rixed_>
this is a very begenning, but I'm pleased to what I have after a single evening. Bitstring is very good for this job!
<thelema>
I use bitstring for pcap files, and yes, it's very good.
<rixed_>
What do you use your pcap files for?
<thelema>
protocol parsing research
<rixed_>
interresting. part of my dayjob is parsing protocols :)
<rixed_>
not for research , though... :(
adrien_ has joined #ocaml
* adrien
pats adrien_
vivanov has quit [Ping timeout: 255 seconds]
<thelema>
well, now isn't a good time for me, but I'd like to get your opinion of a system that should be published
<rixed_>
thelema: did you ever use scappy? It's very nice, but so slow...
<thelema>
never have used scapy, it looks interesting, but I'm mostly interested in line-speed L7 parsing
<rixed_>
thelema: same here...
<rixed_>
thelema: scappy was evaluated for testing purpose
<rixed_>
generating vicious payloads, etc... but was too slow
<thelema>
well, ocaml+bitstring should make it quite easy to replace scapy from what I see
<rixed_>
thelema: yes, my opinion also.
Lor_ is now known as Lor
<rixed_>
why are you interrested in L7? doing a DPI of some sort?
<thelema>
as I said, protocol parsing.
<rixed_>
for what purpose?
<thelema>
just field extraction, the extracted fields can be used for many purposes, but that's not our problem
<rixed_>
thelema: well, in my previous work I used to think this way... until they planned to use the system to spy GSM users...
<rixed_>
now we use the parsers to measure network app performence, it's fun and harmless
adrien_ has quit [Quit: leaving]
<rixed_>
are you aware of the trick consisting of using the packet "frequencies" to find out encrypted protocols? This is my next big todo item.
sgnb` is now known as sgnb
<thelema>
rixed_: packet byte frequencies? Of course.
<thelema>
another student in my lab has done better, and can differentiate text vs. binary (graphics, applications) vs. encrypted
<rixed_>
thelema: not byte frequencies but packet frequencies, ie using only direction, size and time deltas to find out if the payload is https, ftps, interactive shell, and so on...
<rixed_>
usefull to find out what's happening on a VPN for instance (like, say, the RIM private network)
<flux>
rixed_, next step: a disquising crypto tunnel ;)
<thelema>
rixed_: yes, using statistical tests to identify traffic, sure.
<rixed_>
thelema: so, does it works acurately?
<thelema>
depends on the situation, but generally it's quite accurate
<thelema>
of course, the whole concept of identifying traffic by its characteristics is fundamentally flawed in the presence of someone trying to get around such detection
<rixed_>
I'd like to have some time to try that. Measuring for instance https response times without required any certificate would be nice (and much simpler actualy)
<rixed_>
thelema: Yes, but my parser is not required to work in hostile environments
<thelema>
no parser can work in a truely hostile environment, is all.
<rixed_>
thelema: the former DPI on wich I worked could: because it was active, it was able to cut traffic from hostile users :-)
<thelema>
and in general, the internet is hostile to this kind of thing. so I'm not so worried about misuse
<thelema>
if the "hostile" users have control over their endpoints, this isn't a problem
<rixed_>
thelema: I became worried after what happened in Iran after the previous elections...
<thelema>
I stopped worrying after what happened in Egypt and Libya
<rixed_>
hope you're right, but I don't feel people there are out of trouble yet. but we are far of topic.
<rixed_>
May I ask a last question ? Did you try any fancy hardware to run your parsers on? For instance, hardware like cavium or netlogic manycores?
<thelema>
We have developed a hardware accelerated regex engine, and our current solution is very amenable to ASIC implementation, but no, we've not run the parser on any fancy hardware.
enthymeme has quit [Quit: rcirc on GNU Emacs 23.1.1]
<rixed_>
thelema: thank you again for the help with batteries, got to go now.
<thelema>
cheers
rixed_ has quit [Quit: zzzZZZzzzZZZzzz]
rfg has joined #ocaml
oriba has joined #ocaml
oriba has left #ocaml []
rfg has quit [Read error: Connection reset by peer]
rfg has joined #ocaml
_andre has quit [Quit: leaving]
Anarchos has quit [Quit: Vision[0.9.7-H-090423]: i've been blurred!]
Yoric has quit [Quit: Leaving.]
edwin has quit [Remote host closed the connection]