Using ZeroMQ devices to support complex network topologies

“Continuing in my ZeroMQ series, today I’d like to look at ZeroMQ “devices” and how you can integrate ZeroMQ with Gevent so you can combine the easy networking topologies of ZeroMQ with the cooperative multitasking of ZeroMQ. If you’re just getting started with ZeroMQ, you might want to check out the following articles:

The Hidden Truths about Calories

“Odds are you sometimes think about calories. They are among the most often counted things in the universe. When the calorie was originally conceived it was in the context of human work. More calories meant more capacity for work, more chemical fire with which to get the job done, coal in the human stove. Fat, it has been estimated, has nine calories per gram, whereas carbohydrates and proteins have just four; fiber is sometimes counted separately and gets awarded a piddling two. Every box of every food you have ever bought is labeled based on these estimates; too bad then that they are so often wrong…”

Bit Twiddling Hacks

Individually, the code snippets here are in the public domain (unless otherwise noted) — feel free to use them however you please. The aggregate collection and descriptions are © 1997-2005 Sean Eron Anderson. The code and descriptions are distributed in the hope that they will be useful, but WITHOUT ANY WARRANTY and without even the implied warranty of merchantability or fitness for a particular purpose. As of May 5, 2005, all the code has been tested thoroughly. Thousands of people have read it. Moreover, Professor Randal Bryant, the Dean of Computer Science at Carnegie Mellon University, has personally tested almost everything with his Uclid code verification system…”

Plugins in C

“This is the second article in the series about plugin infrastructures.

In the kickoff article of this series, I defined some fundamental concepts we can use when talking about plugins. I also showed an example of a simple but complete plugin system for an application, all written in Python. But see, Python has the unfortunate (?) habit of making everything look too easy. To really show the guts of a plugin infrastructure, we’ll switch to C.

C is the perfect “other extreme” to Python. It’s the most low level of the mainstream programming languages, and almost universally serves as glue between other languages and systems. Understanding how plugins may work in C will help us understand how to implement cross-language plugins in the future…”

John Carmack discusses the art and science of software engineering

“In try­ing to make the games faster, which has to be our pri­or­ity going for­ward, we’ve made a lot of mis­takes already with Doom 4, a lot of it is water under the bridge, but pri­or­i­tiz­ing that can help us get the games done faster, just has to be where we go. Because we just can’t do this going, you know, six more years, what­ever, between games…”

“One of the things that’s been dri­ven home extremely hard is that pro­gram­mers are mak­ing mis­takes all the time and con­stantly. I talked a lot last year about the work that we’ve done with sta­tic analy­sis and try­ing to run all of our code through sta­tic analy­sis and get it to run squeaky clean through all of these things and it turns up hun­dreds and hun­dreds, even thou­sands of issues…”

It’s kind of fun to think that the game engines, things that we’re play­ing games on, have more sophis­ti­cated soft­ware than cer­tainly the things that launch peo­ple to the moon and back and flew the shut­tle, ran Sky­lab, run the space sta­tion, all of these mas­sive projects on there are really out­done in com­plex­ity by any num­ber of major game engine projects…”