Saturday October 9, 2010

[Time] NameMessage
[00:23] jsimmons what would be the result of having multiple zmq contexts in a process?
[05:48] FreeNslaved grim is live ..freekers ball...taking request on channel 3 over at
[05:56] CIA-20 zeromq2: 03Martin Sustrik 07maint * ref8db78 10/ (4 files in 4 dirs): (log message trimmed)
[05:56] CIA-20 zeromq2: Version macros added
[05:56] CIA-20 zeromq2: Macro ZMQ_VERSION represents the current version of 0MQ
[05:56] CIA-20 zeromq2: Macro ZMQ_MAKE_VERSION(major,minor,patch) allows to create
[05:56] CIA-20 zeromq2: a representation of the specified version.
[05:56] CIA-20 zeromq2: The versions can be compared using simple <, >, ==, etc.
[05:56] CIA-20 zeromq2: operators.
[06:05] CIA-20 zeromq2: 03Martin Sustrik 07master * ref8db78 10/ (4 files in 4 dirs): (log message trimmed)
[06:05] CIA-20 zeromq2: Version macros added
[06:05] CIA-20 zeromq2: Macro ZMQ_VERSION represents the current version of 0MQ
[06:05] CIA-20 zeromq2: Macro ZMQ_MAKE_VERSION(major,minor,patch) allows to create
[06:05] CIA-20 zeromq2: a representation of the specified version.
[06:05] CIA-20 zeromq2: The versions can be compared using simple <, >, ==, etc.
[06:05] CIA-20 zeromq2: operators.
[06:05] CIA-20 zeromq2: 03Martin Sustrik 07master * r318cdd1 10/ (4 files in 4 dirs):
[06:05] CIA-20 zeromq2: Merge branch 'maint'
[06:05] CIA-20 zeromq2: * maint:
[06:05] CIA-20 zeromq2: Version macros added
[06:05] CIA-20 zeromq2: Conflicts:
[06:05] CIA-20 zeromq2: builds/msvc/platform.hpp
[06:05] CIA-20 zeromq2: Signed-off-by: Martin Sustrik <> -
[08:47] mikko sustrik: a lot of builds failing against master
[08:56] pieterh mikko: particular example?
[09:01] mikko pieterh:
[09:01] mikko jzmq_master, erlzmq_master
[09:01] mikko seem to fail against master
[09:02] pieterh hey, you got Hudson working :-)
[09:02] mikko here is the build output:
[09:02] mikko yeah, getting hudson running took ~2 minutes
[09:02] mikko adding builds another two hours
[09:02] pieterh you should have announced this, it's great!
[09:02] mikko but since it's been grinding pretty steadily
[09:02] mikko its still a prototype
[09:02] mikko gotta run, bbl
[09:02] pieterh cyl
[09:03] pieterh Socket.cpp:103: error: ‘ZMQ_TYPE’ was not declared in this scope
[10:51] dv hello
[10:51] dv i've tried out publish/subscribe with PGM,
[10:51] dv and wonder about one thing: with PGM multicast, is it possible to have multiple publishers?
[10:56] pieterh dv_: afaik, yes
[10:57] pieterh it is not documented
[10:57] pieterh in the zmq documentation...
[10:59] dv cool
[10:59] dv so I can use this for announce/discovery
[11:00] guido_g multicast is inherently n:m (publisher:subscribers)
[11:00] dv yeah
[11:00] guido_g where n and m can be > 1
[11:00] dv glad to hear zeromq didnt pose any restrictions on that
[11:01] dv now i'm stuck with an amqp based solution in the company project which uses TCP for announce & discovery, scaling n^2
[11:02] Guthur well now you can use that experience as a case study on why zmq would be better, hehe
[11:02] dv heh, yes
[11:02] dv oh, and can I use the zmq forwarder with PGM publish/subscribe?
[11:03] dv to tunnel this to another LAN, for instance
[11:03] dv (over a WAN)
[11:03] guido_g sure
[11:04] dv hm. perhaps i can find the budget to rewrite this component. 0mq sounds like a perfect fit.
[11:04] dv right now, the amqp server is a single point of failure, and eats tons of CPU % when many messages are transmitted
[11:04] Guthur how much could javascript and HTML support zmq?
[11:04] guido_g just attach a multicast subsriber and let it forward the traffic it sees via tcp
[11:04] Guthur HTML5
[11:05] guido_g ømq uses a native wire format, so you need a gateway for websocket
[11:05] guido_g javascript is implementation dependant
[11:06] guido_g a single js engine might incorporate ømq, browsers won't i guess
[11:06] dv i also have possibly found a use for 0mq in a completely different field, not related to the company project at all:
[11:06] dv messaging between multithreaded subsystems of a game
[11:07] Guthur Would nice to have browser frontend connecting directly to services served up via 0mq
[11:07] guido_g Guthur: no, would be an even worse security nightmare then now
[11:08] Guthur but 'they' do like their browser frontends so
[11:08] dv guido_g: he doesnt say connect to ALL services
[11:08] dv perhaps just some frontends
[11:09] dv some authorization layer of sorts
[11:09] guido_g an open port is an open port and can (an will) be exploited
[11:09] dv this is always true for any kind of service
[11:09] Guthur guido_g, I am more thinking of over company intranets
[11:10] guido_g Guthur: same thing, see how and from where most of the data is stolen/missused etc.
[11:11] Guthur guido_g, well we work in a distributed society, I can't see how you avoid these things
[11:11] guido_g by not connecting everything to every thing else and _hoping_ that it will stay ok
[11:12] guido_g like it is donw today
[11:12] guido_g *done
[11:12] dv i briefly talked to a security guy once, and how difficult it is sometimes to deploy any secure layers. his answer was that if its not difficult, then its insecure. :)
[11:12] guido_g *sigh*
[11:15] Guthur guido_g, I know my company are looking to leverage datamining techniques, which is to be facilitated by a common transport layer connecting an extremely wide variety of data sources which will then be correlated by a middle layer and served up where appropriate, this of course will include browser based frontends
[11:16] Guthur If zeromq was to be used, for arguments sake, should it only be used in the Transport layer
[11:18] guido_g if you need browsers and other client side apps, it'll take a while (and cost an enormous amount of money)
[11:18] guido_g but for (not client facing) backends it'll be fine soon
[11:19] Guthur guido_g, ok, cheers, food for thought
[11:19] guido_g np
[11:20] guido_g i'm also in the process of convincing myself to introduce ømq in project that lingers here
[11:21] Guthur I was thinking that it would be a better alternative to a lot of the Java EE based solutions I am seeing
[11:21] guido_g full ack
[11:22] Guthur I'm a little disappoint the Java 0mq isn't quite as mature as some of the other bindings
[11:22] guido_g and given the wide variety of bindings even now you're quite safe for the future
[11:22] guido_g hehehe
[11:22] dv btw i guess several people have started to write RPC solutions on top of 0mq. is this correct?
[11:23] guido_g i fear yes
[11:23] guido_g poor lost souls
[11:23] dv i dont mind RPC, as long as you keep it simple (!)
[11:23] guido_g i do
[11:23] dv i dread a CORBA 2.0
[11:23] guido_g it doesn't scale
[11:23] dv do you know the concept of signals?
[11:24] dv like, qt signals, libsigc++/boost signals?
[11:24] dv in c# they are called delegates
[11:24] guido_g rpc is by definition synchronous, like req/rep in ømq
[11:24] dv i'm thinking about writing something similar, but over 0mq,
[11:24] dv which would be more like pub/sub
[11:25] guido_g there is req/rep
[11:25] dv signal emission -> send
[11:25] dv signal callback invoke -> receive
[11:25] guido_g sounds more like event-driven
[11:25] guido_g which is not rpc
[11:25] dv yeah, true, i use the term very loosely
[11:25] guido_g the "procedure call" is the problem
[11:26] dv qt signals are close to what I mean. you have an "emit mysignal(params);" expression, which can marshal the params, stuff them in a message,
[11:26] dv and upon the next main loop iteration, the corresponding callbacks (called slots) are invoked with the unmarshaled params
[11:26] guido_g ahhh... messaging for the unaware masses
[11:27] dv in an earlier call, you connect the signal(s) with the slot(s)
[11:27] dv works beautifully in practice.
[11:28] dv boost/libsigc++ signals work a bit differently, they dont marshal anything, the signals internally contain a list of callbacks, which are all invoked when the signal is emitted
[11:28] dv which is fast, but not thread safe, and does not work over different hosts
[11:28] dv well, enter 0mq publish/subscribe.
[11:28] guido_g right
[11:30] mikko pieterh: this far hudson has been a joy to test with
[11:30] Guthur guido_g, You mentioned that 0mq would be fine 'soon' for backends, what do you feel is most required to make it ready for 'prime time', so to speak?
[11:31] pieterh mikko: strange, things build fine from the repo
[11:32] pieterh guthur: there are a couple of things missing or not fully explored
[11:32] guido_g Guthur: a bit better error (or should i say condition) reporting
[11:32] mikko pieterh: it might be something to do with the zeromq2 master build failing
[11:32] mikko i removed the make check step and retrying
[11:32] mikko it's waiting for mato's rpath patch
[11:33] pieterh mikko: I just tried that rebuild by hand and it worked...
[11:33] guido_g Guthur: much better introspection
[11:33] mikko pieterh: zeromq2 master building now and it should kick off all bindings afterwards
[11:34] pieterh Guthur: better handling of dynamic networks, e.g. heartbeating at socket level
[11:34] Guthur hehe, sounds challenging
[11:34] mikko it would be nice to get structured information about peer disconnection as well
[11:34] pieterh e.g. req/rep just stops working if server crashes
[11:34] guido_g Guthur: most of the parts are there
[11:34] mikko subscribe to an inproc and get struct zmq_event_t or something when a peer disconnects
[11:34] mikko or connects
[11:34] pieterh also the design and names of xrep/xreq/rep/req need more work IMO
[11:35] pieterh etc. but all these areas are being actively addressed
[11:35] pieterh it's quite amazing how many people are working on different parts of 0MQ
[11:36] guido_g yes, true open source project it is
[11:37] pieterh guido_g: indeed :-)
[11:40] mikko now everything builds apart from perl against master branch
[12:10] dv hm it seems the publisher buffers in the beginning
[12:10] dv i have to send several messages until the subscribes start receiving anything
[12:11] guido_g there is an example on how to synchronize pub/sub in the guide
[12:25] pieterh btw if anyone wants an easy way to write texts like the Guide:
[12:25] pieterh uses github as a kind of publishing medium...
[12:26] dv hmm the "invalid argument" bug with epgm connections is still there
[13:49] xraid hi, speaking of guides . where can i find the source to
[13:54] xraid also Videoconferencing and Instant Messaging source seems to be amiss ... ?
[14:02] xraid Gitdown seems very good thanks ... typo "Github is written and maintained by Pieter Hintjens." -- should prolly read Gitdown ...
[15:50] pieterh seems we lost the source code for those examples somehow
[15:51] pieterh chat example is here:
[16:05] xraid yeah got that buts its funky having codesamples sans code ...
[16:06] xraid and i think i seen the vodeo one perhaps in an earlier source dist ?
[16:12] mikko finally. hudson moved to dedicated 4 core system
[16:31] pieterh xraid: these are hanging somewhere, I'll ask around
[16:32] xraid k thanks
[17:21] CIA-14 zeromq2: 03Christian Gudrian 07master * rf5030a9 10/ (AUTHORS src/select.cpp):
[17:21] CIA-14 zeromq2: Execute the timers before pollset initialisation.
[17:21] CIA-14 zeromq2: Since executing the timers might modify the source pollsets we have
[17:21] CIA-14 zeromq2: to defer the initialisation until after the timers have executed.
[17:21] CIA-14 zeromq2: Signed-off-by: Christian Gudrian <> -
[18:48] mikko lestrrat: zeromq-perl build fails now against maint as well
[18:48] mikko Error: Cannot parse ALIAS definitions from 'ZMQ_MAKE_VERSION(major, = ZMQ_MAKE_VERSION(major,' in, line 11