Shameless Promotion

November 26th, 2014

Just a heads up that I have a couple of new websites that aren’t open source or OpenNMS related.

The first is tarus.io where I plan to put all of the geeky things that really don’t belong here, and because all of the cool kids seem to be getting .io addresses.

The second is forgottencocktails.com which is a blog where I’m trying to make all of the drinks in the seminal Vintage Spirits and Forgotten Cocktails book. You might notice a trend in the frequency of posts there versus here (grin).

I figure at least one of my three readers might be interested in such things, but not to worry as I’ll still be providing open source insight and reckless commentary here for your enjoyment.

Can a Service Outage be Fraud?

November 19th, 2014

I’m in Germany for the always excellent Open Source Monitoring Conference (review coming) and I wanted to have data for my mobile phone. At the airport we stopped at a Relay store and bought an Ortel SIM card for 20 euros (well, €19.90). Since Ronny was with me I just let him activate the card (the process was mainly in German) and we got on the train to Nürnberg.

During the two hour trip I must have exhausted the small amount of default data that came with it, and thus began an odyssey that took over 24 hours to get resolved.

First we tried to go to the “Mein Ortel” site, but it was down.

Then, we downloaded the “Mein Ortel” app from Google Play. It loaded but we could never authenticate.

This lasted for hours.

After we had arrived at the hotel, we noticed that the website, at least, had become available. But at any point when we tried to purchase more time we’d get still another error.

They do have a customer service number, but they charge €0.49 per minute to use it. In desperation we called it but they had closed for the day, so there was no resolution to be had on the first night.

The next day we tried, unsuccessfully, to get the web site and the app to work. Finally Ronny called, was put on hold (!) and then told that they were having issues with their payment system. Why a total lack in the ability to accept payments would require so much time to determine that you would have to be put on hold is beyond me, but my guess is that Ortel just wanted to ratchet up a few more euros from me.

At lunch we went in search of another provider. We found a Base store that sold Ortel and Blau SIMs, but we were told that Blau may take up to 24 hours to activate. We then found a Vodafone store but they wanted €45 for a SIM. In the end, we decided to buy an Ortel voucher (the SIM was activated at least) for €15 and with the help of the lady at the Base store managed to get the credit applied, and I should have service for the reminder of my stay.

My question is: isn’t is fraud to take money for a service and then fail to deliver that service? I’m only here for three days and I was without data on my phone for more than a third of the trip, all due to the fact that Ortel can’t be bothered to implement network management.

I’m doubly surprised that this happened in Germany, since they tend to be more strict on these things than most countries.

Yeah, I know “first world problems”, but as someone who is in this country with nearly 300 other professionals to discuss monitoring it seems like Ortel could benefit from sending some people to this conference. As commercial network-services become even more prevalent and important, I do expect to see the implementation of fines for outages.

Anyway, if you are ever offered the option to get mobile service from Ortel, run the other way.

Net Neutrality and Enron

November 11th, 2014

Yesterday, Senator Ted Cruz from Texas tweeted the following:

It was in response to President Obama making a statement in support of Net Neutrality by wanting to classify broadband Internet as a utility. Despite the fact that it was about six years too late, I had to roll my eyes because I knew that if Obama came out in support of something, the Republicans would feel required to take the opposite stance.

Treating broadband as a utility is a no-brainer. It is basically an extension of the telephone system which has done very well as a utility, and it has become so important to most people and businesses that creating barriers to access would be a huge step backward. The OpenNMS Group would not have been able to survive in a world where we would have to pay to compete for access at levels that HP and IBM can afford, and there are thousands of other small businesses and entrepreneurs in the same boat.

But Senator Cruz and others have received a large amount of money from cable companies, especially Comcast, who stand to benefit the most if they can charge different rates to different content providers. This isn’t an new argument, Jon Stewart discussed it on his show back in 2006:

But now with Obama’s stance and the newly minted Republican-controlled Congress wanting to flex its muscles, expect it to become a hotter topic.

I was made aware of this through The Oatmeal, and while Matt Inman is dead on as usual, his language and analogies are, hmm, shall we say, not often for gentle ears. So while he makes his point he is basically preaching to the choir, and we need to frame the discussion in something that may actually shame the Republicans into doing the right thing.

Then I remembered Enron.

If broadband is not a utility, but seems like one, what could happen if we put control into private hands? That’s exactly what California did in 1996 by partially deregulating its energy market. This let to an energy crisis in 2000 and 2001, that according to Wikipedia was “caused by market manipulations, illegal shutdowns of pipelines by the Texas energy consortium Enron, and capped retail electricity prices”.

It’s eerie that Comcast’s shutdown of Netflix traffic is so similar to “illegal shutdowns of pipelines”. It’s already happening.

So, when faced with irrational statements like those from Senator Cruz, remain calm and just point out “so you think we need an Enron of the Internet?”. Keep saying it, over and over again.

Perhaps they’ll get the message.

Test Driven Development

November 7th, 2014

One of the things that bothers me a lot about the software industry is this idea that proprietary software is somehow safer and better written than open source software. Perhaps it is because a lot of people still view software as “magic” and since you can’t see the code, is must be more “magical”. Or perhaps is it because people assume that something you have to pay for must be better than something that is free.

I’ve worked for and with a number of proprietary software companies, so I’ve seen how the sausage is made, and in some cases you don’t want to know. Don’t get me wrong, I’ve seen well managed commercial software companies that produce solid code because in the long run solid code is better and costs less, but I’ve also seen the opposite done simply to get a product to market quickly.

With open source, at least if you expect contribution, you have to produce code that is readable. It also helps if it is well written since good programmers respect and like working with other good programmers. It’s out there for everyone to see, and that puts extra demands on its quality.

In the interest of making great code, many years ago we switched to the Spring framework which had the benefit that we could start writing software tests. This test driven development is one reason OpenNMS is able to stay so stable with lots of code changes and a small test team.

What’s funny is that we’ve talked to at least two other companies who started implementing test driven development but then dropped it because it was too hard. It wasn’t easy for us, either, but as of this writing we run 5496 tests every time something changes in the main OpenNMS application, and that doesn’t include all of the other branches and projects such as Newts. We use the Bamboo product from Atlassian to manage the tests so I want to take this opportunity to thank them for supporting us.

OpenNMS 14 contained some of the biggest code changes in the platform’s history but so far it has been one of the smoothest releases yet. While most of that was due to to the great team of developers we have, part of it was due to the transparency that the open source process encourages.

Commercial software could learn a thing or two from it.

OpenNMS 14 Timelines

November 5th, 2014

I often talk about how OpenNMS is a platform and not just an application, and with the release of OpenNMS 14 there is a lovely way to demonstrate the difference.

There is a cool little GUI improvement that I believe was started at last year’s Dev Jam which provides graphical timeline for outages. So now instead of having to look at the outage table on a node’s page, you can just look at the service availability section.

Cool, huh? What you may not realize is that instead of hardcoding the feature the timelines are rendered through ReST. The GUI sends a ReST request to the server which returns the graphic information. Let’s examine the “Update” service above.

The query

/opennms/rest/timeline/image/46/172.20.1.38/Update/1415119622/1415206023/480

results in:

with a format of:

/opennms/rest/timeline/image/{nodeId}/{ipAddress}/{serviceName}/{start}/{end}/{width}

Even the header graphic is done the same way

/opennms/rest/timeline/header/1415119622/1415206023/480

results in:

with a format of:

/opennms/rest/timeline/header/{start}/{end}/{width}

Of course, assembling all of that can be tedious, so this query:

/opennms/rest/timeline/html/46/172.20.1.38/Update/1415119622/1415206023/480

with a format of:

/opennms/rest/timeline/html/{nodeId}/{ipAddress}/{serviceName}/{start}/{end}/{width}

will create the whole HTML code needed to render the timeline:

document.write('<img src="/opennms/rest/timeline/image/46/172.20.1.38/Update/1415119622/1415206023/480" usemap="#46-172.20.1.38-Update">
<map name="46-172.20.1.38-Update"><area shape="rect" coords="128,2,412,18" href="/opennms/outage/detail.htm?id=153740" alt="Id 153740"
title="2014-11-04 18:13:24.628"><area shape="rect" coords="-111,2,-26,18" href="/opennms/outage/detail.htm?id=153724" alt="Id 153724" 
title="2014-11-04 06:12:56.322"><area shape="rect" coords="-2051,2,-1925,18" href="/opennms/outage/detail.htm?id=153348" alt="Id 153348" 
title="2014-10-31 06:13:11.421"><area shape="rect" coords="-2291,2,-2291,18" href="/opennms/outage/detail.htm?id=153289" alt="Id 153289" 
title="2014-10-30 18:11:33.006"><area shape="rect" coords="-2691,2,-2397,18" href="/opennms/outage/detail.htm?id=153258" alt="Id 153258" 
title="2014-10-29 22:13:27.086"><area shape="rect" coords="-2871,2,-2871,18" href="/opennms/outage/detail.htm?id=153235" alt="Id 153235" 
title="2014-10-29 13:12:29.747"><area shape="rect" coords="-3071,2,-2884,18" href="/opennms/outage/detail.htm?id=153137" alt="Id 153137" 
title="2014-10-29 03:12:13.887"><area shape="rect" coords="-3232,2,-3231,18" href="/opennms/outage/detail.htm?id=153132" alt="Id 153132" 
title="2014-10-28 19:11:02.873"><area shape="rect" coords="-3690,2,-3670,18" href="/opennms/outage/detail.htm?id=153086" alt="Id 153086" 
title="2014-10-27 20:14:11.949"><area shape="rect" coords="-6431,2,-6431,18" href="/opennms/outage/detail.htm?id=152786" alt="Id 152786" 
title="2014-10-22 03:11:05.149"></map>');

If a service isn’t monitored, such as the StrafePing service in the above example, that empty timeline is also available:

/opennms/rest/timeline/empty/1415119622/1415206023/480

with a format of:

/opennms/rest/timeline/empty/{start}/{end}/{width}

Pretty cool, huh? A lot of OpenNMS is accessible by ReST and the wiki page covers most of the options. Thus you can use the data via the OpenNMS GUI or integrate it with one of your own.