Source code and individuality

Developers! We are the modern day artists, the masters of the keyboard and the sculptors of algorithms and ideas. We turn obscure thought and imagination into real life creations, capable of doing things previously not done (well, at least not in the same form). As such, we are individuals and unique – each one of us in our own way. Whether we develop a mobile app or a web application, our unique style, way of thought, organization and coding style will be reflected into our creation – we can’t help it, this is who we are.

About 2 years ago I’ve done a project for a start-up company in Israel, where I developed a full blown switching environment for them. I worked on that project for around 9 months and how shall I put it, my name was all over the place. Normally, when I take a piece of code from the OpenSource/PublicDomain, I will document where it came from within the code – then I will add a simple remark next to my modifications.

So, the other day I met one of the new developers working on the project – who didn’t know I was the original developer. And he told me about some issue that he was having with his project – so, in a very natural way, I pointed out to him that the original code wasn’t meant to work like that, specifically, he should into a specific function to resolve the issue and add some additional code to make it work as he wanted. The guy was shocked – “What the hell? are you psychic or something? how can you know that?” – I replied – “Well, I wrote the damn code, I should know”, which followed by me showing him the original source code on my computer. The guy said: “Yes, that is the source code, but all the remarks of the original source code are gone”. Seems that following my departure from the project, someone went into great length in order to remove the various comments I’ve put into the code, to make its origins as unclear as possible.

So, on one hand, I truly understood it – after all, the guy running the show doesn’t want the new people to call up the previous developers and exposing new stuff to them – even if by mistake. On the other hand – Dude, are you really that lame? are you really the afraid that your team will know who wrote the original code?. Source code is a living organism, it is an unique as the person who wrote it and will evolve and change as more people write more code. The Asterisk project still contains remarks that Mark Spencer put back in 2002 – and they are no longer relevant to the existing code, but only to an obscure part of the original code – but it’s still there.

So, to sum up, I never remove remarks that other people wrote from my code – it’s rude, it’s bad practice and worst of all – it’s ugly and disrespectful. Developer will join and leave a project, show your minimal level of respect by respecting their code and their remarks, leave them where they are – removing them is just like performing an act of murder.


Can you say – antitrust?

Version control! one of the most controversial subjects in the software industry. Whether you’re a Subversion fanatic, a Git hard core or a mercurial elitist – everybody has something to say about version control. While in the past we had put our trust in local CVS and SVN repositories, today, most of use utilize cloud based services such as Github, BitBucket or Gitlab.

After spending much time this week setting up our new gitlab repositories – mainly for finished projects that are no longer in active development, and can be removed from our quota at Github, I cam to realize that all these companies are somewhat at a position to be considered as “anti-trusted”. Imagine a hypothetical situation where github starts examining the code we submit to it, not only the public one, but also the private one. Imagine what kind of intellectual property assets they have access to.

In 2001, Tim Robbins portrayed a software giant CEO that is so driven by ambition and greed, that he is actually willing to have developers killed for their code. Where in 2001 developers were very much working in closed quarters and sharing their work via privatized means, today, almost all of us use the clouds in some form. Can they be trusted? What happens if one of them gets bought out by a software giant?

Let us imagine the follow scenario:

The GitGiantCloud (GGC) service has been recently acquired by MegaGreedySoftwareCorp (MGSC). MGSC announces that it will continue to run GGC as always, however, in the background they start analyzing the code within the privatized repositories – completely violating their EULA. Would anyone know about it? the answer is NO. Is it considered a breach? well, they can always excuse it as: “we identified a potential breach, we had to take these measures to investigate it”. In other words, even if they are reading your code – you’ll never know if it’s true or not.


Mobile VoIP OTT is Dead! – Long Live Mobile VoIP OTT!

What do the following have in common: Skype, Viber, Whatsapp, Line2, Tango and Kakao? Yes, there are all OTT apps for your mobile phone that enable you to communicate with your peers. Skype, Viber, Line2, Tango and Kakao actually enable you to call one another. Each one dominates a section of the world, where Kakao and Line2 are dominant in the far east, Viber dominates Japan and Eastern Europe and Skype kind’a says: “Look at me bit**es, I’m all of you combined”.

What do the following have in common: VoipDiscount, Nymgo, WiCall, VoIPstunt, Vox Mobile, Cloud Roam, Skuku? All of these are VoIP Mobile OTT apps, similar to the above and yet – no one truly heard about these or is using them. Each one of the above is more or less a replica of the previous one, maybe with one or more added features – but all in general are the same pitch and bit**, make cheap calls over VoIP via our service.

So, what does it all mean? it means one simple thing, no one truly cracked the formula to make money on the Mobile VoIP OTT business – everybody is still looking for the killer business model/VoIP OTT Application. What is the right way? providing low cost calls? providing business oriented services? providing simple roaming solutions? maybe bundling roaming data plans and SIM cards? or maybe, all of these are sooooooo passe that the world just says: “Stop fu**ing about and create some truly new, change how think and how we work completely. Paying 1 or 2 dollars more per month, I’m not gonna change my service for that – it’s pointless.”

So, what are the true killer apps that will truly say: “this is a game changer, from this point onward, VoIP OTT will no longer be the same!” – Here is a list that I believe will make the difference:

1. Make calls completely social – Phone numbers are so 18th century, they are pointless

2. Make your phone aware – Presence and availability is key

3. Drop the stupid things – call recording, visual voicemail, funny sounds, funky tones – stop the bullshit, give me proper services than stupid features

4. Make your service reliable – stop behaving like a website operator and thing like Ebay, every minute your service is down or affected by bad service you are loosing money

5. Make work, then make pretty – application design is important, product design is important, but not more than the product itself

6. Invest in support and monitoring – relying on your suppliers to do it for you is stupid and childish

7. Only blame yourself! – when something fu**s up, it means that you did your job wrong and you cut corners. Don’t start blaming your colleagues or your contractors, they are only doing what you asked them to do

And most importantly, remember the following statement: “I’ve seen the furthest, because I sat on the shoulders of giants.” – don’t tell the world how you’re going to obliterate Whatsapp and Skype, look at them, strive to be them, and then do it better.

I wish all of you good luck.

Building your Asterisk based Business – Part I

** Cross posted from: **

Since the inception of GreenfieldTech, back in 2007, we’ve assisted over 20 different VoIP companies to bootstrap their activities and launch their products. During that period, some of these companies had become a great success and some had disappeared from the face of the planet. This series of posts will bring the story of some of them – and we’ll try to analyse what made each company into a success or a failure.

Making the case for Asterisk based business

Let’s be honest and truthful with ourselves, we’re all capitalists. Yes, we are first Open Source evangelists and promoters, but at the end of the day, we do need to pay our bills and make ends meet. Thus, we monetize open source (in our case Asterisk) to the best of our abilities – there is no shame in that, and honestly, we take high pride in our ability to assist companies in monetizing open source tools and project in a productive and lucrative manner.

When people talk about Asterisk based businesses, normally they will consider one of the following tracks:

1. Asterisk PBX Integrator – Integrating Asterisk based PBX systems for companies of various sizes. Normally, this will include infrastructure installation, cabling, server support, hardware sales, etc.
2. Hosted PBX Service Provider – Providing VoIP PBX services, without any in-door server equipment, relying on the Internet or leased lines only. Normally this will include similar activities as the Asterisk PBX integrator.
3. Hosted IVR Service Provider – Providing Hosted Interactive Voice Response services to content providers and enterprises that can’t sustain their own IVR infrastructure.
4. Hosted Premium Services Provider – Identical to “Hosted IVR” with a focus on premium services content and adult content.
5. Telecom Carrier – Whether you are a mobile carrier or a landline CLEC, Asterisk applications can benefit a carrier of any size.
6. Value added services provider – Providing complimentary services to Asterisk and its derivatives.

The above is a very short list, as each item on that list can be expanded to 6 more sub-categories – however, these represent the major business types (not including consultants and developers, who fall under category number 1). There are similarities between these and significant differences as well. What may be true for one, maybe completely wrong for another – it all depends on your business goals and product development life cycle and life span. We will limit ourselves to discuss options 2 through 6.

Case I: Long Distance Calling Cards Operator in the US

June 2007, a representative of a calling cards operator in the US approached. The operator was back then using a hosted service from a company called Solegy (long gone) and was fairly unhappy with the service. Their main complaints were: lack of support responsiveness, lack of feature set, inability to expand existing feature set – and most importantly, inability to sustain a proper business model (unlimited calls), due to high termination and hosting prices.

At that time, the calling card operator had put the following restrictions as to creating the service:

1. Bootstrap pricing should not exceed the $10,000 USD.
2. All existing customers should be migrated to the new system.
3. All existing access numbers should be migrated to the new system.
4. New system should be based upon ready-made software – not customized development.
5. New system should enable additional service development and scalability.
6. New system should allow hosting on hosted servers, without any need for proprietary hardware.

The solution that was chosen (after all, it was 2007) was a mixture of OpenSER, coupled with Asterisk 1.4 and A2Billing. Calls will hit the OpenSER SIP proxy, which will then load balance to the various Asterisk servers. The solution met the various constraints listed above – and later on included a monthly support/maintenance cost that was sustainable for the business. The company continued on to provide direct DID numbers, VoIP termination services, Roaming SIM cards solutions, Hospitality Mobile phones and additional services. In 2010, the company had sold its operations to another company – which was a disaster. During the recent changes in the roaming market in the US and other regulations, the company had seized its operations and is no longer operating.

Was this company a success story? – Complicated Answer

Between the years 2007 and 2010, the company had grown from 1000 customers to a whopping 15,000 customers, paying a monthly service fee ranging from $15 USD to $59 USD. Roughly calculated, that’s an average of $550K USD per month turn-over. In deed, termination costs and operational costs rose up to around $450K USD a month, but considering the fact that the company had only 4 employees and two additional outsourced support resources, a monthly Net revenue of $100K USD is not bad – we can surely mark this as a success. The company realized that in order to sustain its business, they would require proper customer care and support services and they made sure these resources were clearly managed and sourced.

Following the company’s purchase in 2010, the new owner had decided that customer care and support structure aren’t really required, as the sales staff can handle customer care and support can be rendered by an outside resource on a per-incident base, with no binding SLA service. ¬†Within less 12 months, the company customer base shrunk from 15,000 to around 3,000, bringing the entire operation to a stand-still. The new owner tried focusing on new business tracks, without preserving and maintaining the existing lucrative tracks.

So, what went wrong here?

The primary answer would be: failure of the new management to understand the business. Calling cards and VoIP services are customer oriented services. This applies to Mobile VoIP OTT services as well. Asterisk is a solid tool to use when building your business, it will take you a long way and make sure your ROI and TCO will remain as low as possible, while preserving your knowledge and experience in-house as much as possible. When a successful company is acquired by a financial outfit, that has no valid experience in the market sector, in many cases – it will fail. The lack of understanding of customer care structures, proper support, proper monitoring, proper NOC, ticketing handling, NOC liaising and proper technical escalation are the main attributes of a successful service and product in this industry.

In our next post

In our next post we’ll discuss the world of “ad-revenue financed calls” and the “call-back industry”, as it was in 2008, 2010 and what happened to it today.


Hardware Review: Allo.Com GSM Card

** This post is cross-posted on **

Honestly, this is something I should have already done a long time ago. About 4 months ago, Allo.Com approached us (GreenfieldTech) to write a review about some of their products. After they agreed to the terms – mainly that they we’ll publish our findings, good or bad – we had to move offices, so everything kind’a went into limbo. Last week, finally, we got around to start reviewing the hardware. We currently started with 2 products, the Allo.COM GSM card ( and the Allo.Com MegaPBX (

As Eric is still evaluating the MegaPBX, we’ve decided to publish our findings regarding the GSM Card for Asterisk.

Hands on the product

So, the product itself is nicely packaged – in terms of the electronics involved. I’ve examined the soldering quality, and it would appear that it provides a fairly consistent 60% coverage of soldering, which is fairly acceptable for a card of this scale and quality. One thing I didn’t like was the usage of external wires, however, as this is not the first time I’ve seen that, I can accept it. The card itself is available in 2 form factors, so in general, the “hands on” evaluation passes nicely.


“Patches? Patches? We don’t need to stink’n Patches!” – I admit it, there is nothing I hate more than patching DAHDI drivers (Old OpenVox Style) or adding some 3rd party middleware for DAHDI to make things work (Sangoma). This card takes a slightly higher road. Yes, you are required to have the Asterisk (I do mean Asterisk) source code available. However, it will compile the “channel driver” and an internal resource, very much like the SIP channel – not requiring you to patch Asterisk or DAHDI at all – so in that respect – KUDOS !

To be honest, it took me about 2 days to get the card running, but I was at fault – well, not completely. While the compilation of a “native asterisk” channel driver is a wonderful idea, the documentation kind’a sucks. They still have milage to go with that, however, after contacting their very professional and helpful support staff – it was compiled at ease.


One thing to get used to – this card is slower, and I do mean much slower, than a normal analog card. The reason isn’t the card, it’s the GSM network. It takes about 10-30 seconds for the card to become fully active, mainly due to the fact that the SIM cards need to register with the GSM network. Once fully active, it will present a channel type GSM, which operates very much like its DAHDI analog equivalent.

The Fire Test

How the hell do you test a card? you make it work really hard – and I do mean hard. So, in order to do so, I’ve created the below Asterisk dialplan:

exten => _X.,1,Set(TIMEOUT(absolute)=${RAND(600,7200)})
exten => _X.,n,Answer()
exten => _X.,n,Wait(${RAND(10,30)})
exten => _X.,n,Dial(GSM/2/050808XXXX,120,R)

exten => h,1,Originate(Local/111@playback-loop,exten,from-ipphone,1111,1)

exten => _X.,1,Answer()
exten => _X.,n,Wait(1)
exten => _X.,n(loop),Playback(demo-congrats)
exten => _X.,n,goto(loop)

This dialplan is designed to create random length calls, with a random waiting period between calls. I then issued the following command from the dialplan, to kick it off:

<div id="_mcePaste">noc*CLI&gt; channel originate Local/111@playback-loop extension 222@from-ipphone</div>

The above will start dialing over and over and over again. My test was really simple, generate X number of calls from my Asterisk host, receive X number of calls on my other SIP gateway. Calls will traverse the GSM network, always playing back the same message and information.

Final Result

Ok, so the test I devised was fairly harsh, specifically due to the fact that I left it running for 5 days !

My origination gateway had originated over 1000 calls in 5 days, sorry to say, only 500+ calls were accepted at the other side. Primary reason appears to be GSM network related and not card related – so it’s hard for me to attribute the result to a specific issue. However, in general, the card performed as I more or less expected it to perform.

Who should use this card?

If you plan to build a GSM gateway – this card isn’t for you, you need something with a bit more control and variability. For a mobile office or as a cellular backup to your PRI line in the office, this will make a nice addition, at a reasonable price range.

Overall mark: 7.5 out of 10