[By now, you should all know Ofer Goren.. He has guest posted here on his experiences with multicore optimization. Well, he's back, along with the aftershock effect of the work he did.] At the last Intel seminar I participated in, James Reinders, the Chief Software Evangelist & Director of Software Development Products at Intel, made a great comment when asked a question. “Intel has no opinion yet on that matter. I’ll give you my opinion, which
(read more...)
By Ofer Goren | June 17th, 2009 | Filed under Development
I’m probably late on the wagon with this, but I just discovered that standardized protocol interfaces are fast becoming commonplace – and I’m not talking about the network-side interface, I’m talking about the application-side interfaces, also known as APIs, or should I say open APIs. APIs used to be a matter of taste and design, pride and prestige; they were known to make or break an SDK. All this is about to change, as APIs are being standardized, and SDKs
(read more...)
By Ran Arad | March 25th, 2009 | Filed under Development, Standardization
We just implemented an Adaptive Jitter Buffer (AJB) module over our Advanced RTP stack and I wanted to share a few insights that I arrived at during development. What is Jitter? A quick statistics reference, over an IP network, packets sent are always received in the same order that they were sent in or with the same latency. For simplicity sake, we’ll look at the time between sending and arrival of a packet as a random variable with a normal
(read more...)
By Ran Arad | December 15th, 2008 | Filed under Development
Henri Poincaré (1854 -1912) is sometimes said to be the last mathematician to know all of Mathematics, or The Last Universalist, as he excelled in all fields of mathematics. It’s not that we don’t have bright people today, it’s just that mathematics today has so many disciplines that it is impossible to know them all in depth and excel in them. The amount of knowledge that is needed to excel in a field is so great that we no longer
(read more...)
By Ran Arad | December 3rd, 2008 | Filed under Development, Standardization
The access architecture of an SDK refers to the types of events generated by it (synchronous, asynchronous), the way it handles API calls (blocking, non-blocking), and the way it processes events (on event, on poll). Different paradigms fit different needs. I usually divide these architectures to 4 main types: Asynchronous events, non-blocking API calls Synchronous events, blocking API calls Event queue, API calls queue Polling for events Each of these has its advantages and drawbacks, and most importantly,
(read more...)
By Ran Arad | September 3rd, 2008 | Filed under Development, SDKs
As I stated many times, I think binary encoding is superior to text based encoding. However, usually, when you are a software engineer implementing a protocol, the protocol choice is not yours. In this post, I will consider the pitfalls and gotcha’s of text-based protocols and how to design your way around them. I mostly consider protocols defined by ABNF rules (such as SIP). If the protocol uses an XML scheme, there are readily available documents on parsing XML into
(read more...)
By Ran Arad | July 3rd, 2008 | Filed under Development, SDKs
There is a huge difference between compiled languages and scripting languages: the former are first entirely compiled and then executed, the latter are interpreted as they progress. I will use this terminology to discuss two types of protocols: the more common is made up of readymade messages or methods; each message type indicates a predetermined course of action. The less common type, and one I think deserves more attention, sends messages made up of many simple commands that do very
(read more...)
By Ran Arad | May 27th, 2008 | Filed under Standardization
In my previous post, I mentioned the “wicked son,” the vendors who want to give their customers a sense of security, but do not actually want to implement any cumbersome security algorithms. I had a customer using H.323 who sent me specifications for a security implementation for H.323 where the password wasn’t known in advance, and asked us to support it. When I mentioned to them that they were showing the password in the open, where anyone who wants can
(read more...)
By Ran Arad | April 30th, 2008 | Filed under SDKs, Standardization
I have previously mentioned Joel Spolsky’s brilliant post about standards. If you’ve not read it yet, it is really worth your while. In that post he quotes Jon Postel‘s robustness principle and Marshall Rose’s critique: Counter-intuitively, Postel’s robustness principle (“be conservative in what you send, liberal in what you accept”) often leads to deployment problems. Why? When a new implementation is initially fielded, it is likely that it will encounter only a subset of existing implementations. If those implementations follow
(read more...)
By Ran Arad | April 7th, 2008 | Filed under Interoperability, Standardization
There are two kinds of protocol wars: one is between competing protocols, and the other is between protocol implementations. I would like to offer a glimpse into the reasons and ways in which companies implementing the same protocol compete with each other. However, I will first need to make a small disclaimer: any example I give here is not meant to imply that any company involved has any intention of malice or foul play. In fact, I am sure that
(read more...)
By Ran Arad | March 31st, 2008 | Filed under Interoperability