Southeast Linuxfest – It Keeps Getting Better

The Southeast Linuxfest (SELF) is one week away, so be sure to mark you calendars and register (it’s free, but consider becoming a Supporter to insure that these types of shows will continue).

I am also happy to announce that Charlotte’s own nerdcore duo, Mikal kHill & Sulfur, aka The ThoughtCriminals, are also going to be performing as a special guest of MC Frontalot. It promises to be a fantastic weekend and I hope to see you there, and be sure to check out Mikal kHill’s website for the geekiest tumblr I’ve ever seen (although I must admit I thought tumblr was just for pr0n).

Barrel Aging Drinks

No OpenNMS content, but since at least one of my three readers is into home brewing I thought this might be of interest. While I love the chemistry behind home brewing, my waistline could never survive it.

I travel a lot for my job, which means I’m lucky enough to eat and drink in nice restaurants (the downside is that I’ve had more than my share of meals purchased from convenience stores as well – the joys of travel). One thing I’ve seen over the last year or so is a resurgence in the art of the cocktail.

I’m not talking about a rum and Coke or a seven and seven. I’m talking about drinks that take time to prepare, like most of the cocktail menu a the bluezoo restaurant in Orlando. Some good friends of mine introduced me to that place, and the General Manager there has been kind enough to share with me some of the recipes, usually involving infusions, shrubs and/or foams.

One thing they do at bluezoo is barrel age cocktails to create a much richer, complex flavor. I’ve always been interested in trying that, so when I read an article by David Lebovitz about a barrel aged Vieux Carré I decided it was time.

I contacted my friend at bluezoo who sent me to Thousand Oaks Barrel Co., and I dutifully ordered a 2L oak barrel for this project.

The barrel is oak that’s charred on the inside, and while the barrel itself seems well built, I’m not happy with the little spigot. You have to assemble it yourself, but even though I was very careful, the handle came off. I’ve attempted to glue it back on, but I might end up using pliers to turn it. A little disappointing since otherwise it looks pretty cute.

In any case, I was now ready to assemble my Vieux Carré. I had my Canadian Club (per the recipe), a decent Cognac and the only Sweet Vermouth I could find in Pittsboro. I also had the required Peychaud’s bitters via Amazon.

Since it was a 2L barrel, I decided to go with 600ml of each spirit and a teaspoon and a half of bitters. Once done I placed it out of the way on the bar.

Now all I have to do is wait 6-8 weeks. I believe I’ll need to decant the drink once it is done as too much aging is not a good thing, but I plan to experiment a bit with it.

Unread Notifications in Ubuntu 13.04

I think Ubuntu 12.04 LTS is one of the most stable operating systems I’ve ever used, deserving of the “Long Term Support” label.

I haven’t been as happy with later releases. I still run 12.04 on two machines, but my work machine is running Raunchy Ramjet. It tends to die in a spectacular way a couple of times a week (always Compiz) but now I’m getting some weirdness in the unread count for Thunderbird.

I am very e-mail driven, so I always find myself looking up to the left hand corner of the screen to see if I have any new mail. While it works some of the time, quite frequently the unread counter is missing when I have a number of unread messages. But what I thought was even weirder was that once the indicator actually looked crooked:

Odd huh. Haven’t seen it since, however.

Still wish I could get .WAV files to play properly on 13.04.

Sweden – Part 3

I just got back from Sweden (my third time this year) and was given permission by the client to discuss the project we are working on there.

The client is Bonnier Digital, part of Bonnier AB. Bonnier is a huge media conglomerate based in Sweden that consists of over 175 companies with more than 10,000 employees. If you read Popular Science then you read a Bonnier media product.

With so many individual companies, Bonnier was dealing with a lot of duplication of IT infrastructure. Bonnier Digital was founded to both consolidate their IT operations as well as to build a business providing world class IT services to other companies. They are deploying thousands of kilometers of fiber around Sweden to bring together various data centers, the largest of which will house nearly [redacted] shipping containers (a lá Google) filled with servers and related equipment.

(I was asked to remove the actual total by the client, but it’s “lots”)

OpenNMS has been chosen as the application platform which will manage this huge infrastructure, and in doing so provide state of the art surveillance for IT operations in general and the media business in particular.

It was interesting to be in Sweden when it wasn’t frozen. While it wasn’t warm, the leaves were starting to emerge on the trees, and the days were very long. The first morning I was there I woke up in a panic that I’d overslept since the sun was streaming in the window, but my handy reported it was only 05:58. I liked the fact that the woods were carpeted with this plant with little white flowers.

Note that while I’m still curious, I have yet to try that other white thing one finds in Sweden:

Due to this project we spend a lot of time in country. I was there for two weeks, along with Alejandro. To make being away from home easier, we encourage our engineers to bring along their spouses, and for this trip Carolina joined her husband.

I hope she had a good time, because most days we work until late in the evening and during the week I only saw her a couple of times, but I did get to see her on the weekend. It was pretty gray where we were, so I did a Google search on “sunniest place in Sweden” and we decided to go to Karlstad.

Karlstad is a pretty neat town. There are lots of statues, and for those of you who play Ingress, that means lots of portals. Alejandro and Carolina followed me around as I played the game. I had my picture taken next to a statue honoring Sola i Karlstad (the Sun in Karlstad) a waitress known for her sunny disposition.

Karlstad is located in the province of Värmland (Bonnier Digital is nearby in Dalsland). There is a museum in Karlstad featuring the art of Värmland, which includes a replica of Viking runes. Fans of Lord of the Rings will recognize them as the inspiration for runes in those books.

Karlstad is at the top of Lake Vänern, so we drove down to see the water. Vänern is a huge fresh-water lake that is the largest in the EU, and the 26th largest in the world by area (as well as by volume).

It was a nice trip and we did see lots of sun.

My friends Lars and Linda (from the great Moose expedition) invited us out on the lake on the following Tuesday. While it was still a little cold, I can imagine how much fun it would be to be out on the water in the summer time. We saw tons of fish on the fish finder, but they just weren’t in the mood to bite.

As part of the tour we went out on Vänern proper, and you could see the waves getting choppier. Vänern is dotted with hundreds of little islands, and you could see several as we bobbed on the water. Since it was cold and the wind picked up on the open water, we turned around and headed back, doing about 27 knots.

When we got back to the dock, Lars got a call dealing with a security issue and so we sped off at high speed in his Range Rover to try and catch some bad guys. It is something to be doing 60 mph on backcountry Swedish roads, although I must admit that Lars is an excellent driver and I didn’t feel unsafe at any time. Still, when I had the chance, I did feel the need to rid myself of some extra fluids I’d been carrying around (grin).

So once again I left Sweden with a few more adventures (Lars and Linda took Alejandro and Carolina out on ATVs the next night, but I was a little too beat to make it) and I look forward to many more in the future.

The Dangers of Dihydrogen Monoxide

Okay, I know that this was probably federally mandated, but I found this funny example of over-labeling:

This is label is from a spray bottle used for cleaning. DI Water, or Deionized Water, is a purified water product in which the trace minerals have been removed, which makes it nicer to use for cleaning since it won’t leave behind any scale residue.

What I found funny was the warning label, for water:

Yessir, drink enough water and you can suffer from convulsions. I’m a little upset that they don’t include death, since drinking absurd amounts of water can lead to death, not to mention if the product is used in ways contraindicated by the label (i.e. in the lungs). And be sure to wear the appropriate protective gear when working with water, or else your skin might get all pruney. It continues:

Now the key words are in the second picture: MSDS Reference. As a commercial cleaner, even if it is just water, there has to be an entry for it on the Material Safety Data Sheet, and I’ll bet that most of the wording for this label came from that document.

But I still have to ask myself if we, as a culture, haven’t gone a little too far.

All Dressed Up

Today was the first work day for our summer intern, Joe.

When he came to interview, he was all dressed up in a suit. I strongly recommend wearing suits to interviews unless told specifically not to. It demonstrates that you own a suit and can put on a tie, and thus we are likely to imply that you are conscientious, chew with your mouth closed, bathe periodically and don’t pass gas in public. These implications may or may not turn out to be true, but it is nice to see someone make the effort.

Since today was his first day, we decided as a joke to come to the office all dressed up.

( Click to embiggen )

The non-smiling, non-tie-wearing guy is Joe. Next to him are Emily and Carolyn, our account managers, Ben, Donald, myself and Matt.

Seth and Jeff, who were remote today, dressed up for the daily scrum call.

A Quick Post on Being Nice

There was a nice e-mail on the opennms-install list today. The install list is our “newbie” list, as the first hurdle to jump with OpenNMS is to get it installed, and a person had posted a question about a Debian install.

The question was well worded, and while I couldn’t explain the problem the person was having with importing our GPG key to apt, I was able to quickly test a workaround on my desktop and offer it to the list.

Here is the reply we received:

I wanted to thank everyone for helping me with this issue. Obviously, I am new to this and just trying to learn. I asked a question on a different listserv (for a different monitoring software package I was testing) and all I received were snarky responses and little to no help…how discouraging! That definitely was not the case here!!!

I went with Tarus’ instructions and they worked just fine. The rest of the tutorial was spot on for me and no issues. I now have a few nodes scanned and am just loving the interface and how it feels.

I have been involved in open source for a very long time now, and I have to say that his experience with “snarky responses” is all too common. We have always made the best effort to be open and friendly to new users, since they will be the old users of the future.

But I can understand how this happens. No sooner had I read the post then someone else hijacked the thread with a “it don’t work help me plz” question.


I tried not to be snarky when I replied, asking the user to start a new thread by sending a new message to the list. Was it too much to point them to esr’s “How to Ask Questions” document?

I also felt the need to stress that any direct replies to me would be ignored. While this doesn’t happen with most users on the list, usually the ones that need a little more help latch on to the first person to reply and start peppering them with questions to their direct e-mail address.

I never feel right answering those, since our business model is for a large part built on providing commercial support services, so in order to ask me a direct question I want you to have a support contract. Not because I’m greedy, but because I want to be fair to the people who put food on my table.

But the list is different. Since it is shared I feel like I am answering not only the question at hand but almost all future versions of that question.

It’s really hard to balance limited time with virtually unlimited needs, but if someone politely asks a well-formed question on the list, I do my best to answer it.

Who knows, perhaps one day in the future they’ll answer a question of mine.

Managing Complex Configurations with XML ENTITY

UPDATE: Alejandro discovered that this method doesn’t work if you use Scheduled Outages as the webUI will write back the file as a single one and not preserve the ENTITY imports.

While we have made some serious strides toward making the OpenNMS configuration more modular, from my own humble contribution of include files in eventconf.xml, to breaking up datacollection-config.xml and, we still have some way to go to finish it for the rest of the application.

However, you can leverage a shortcut built into the XML standard to help manage files that can get complex. It allows you to import XML from one file to another.

It does have a limitation. Unlike the work we did with datacollection-config, etc., where we combined different parts of a configuration (generic resources, MIB object groups and system definitions) into separate files, this will only work if you can life whole sections out into other files.

One example would be the poller-configuration.xml file where you can remove entire sections. Here’s how you do it.

First, at the top of the file, you have to define the files you want to include:

<!DOCTYPE root [
  <!ENTITY pkg_Network-Connectivity SYSTEM "./etc/poller-configuration.d/pkg_Network-Connectivity.xml" >
  <!ENTITY pkg_StrafePing           SYSTEM "./etc/poller-configuration.d/pkg_strafePing.xml" >
  <!ENTITY pkg_Generic-Management   SYSTEM "./etc/poller-configuration.d/pkg_Generic-Management.xml" >

This will create a reference to the particular files you want to include. Then, to use them, you simply reference them at the proper place in the file:

<poller-configuration threads="900"
  <node-outage status="on" pollAllIfNoCriticalServiceDefined="true">
    <critical-service name="ICMP"/>

  <!-- Layer 3 network connectivity -->

   <!-- Layer 3 network diagnostics for jitter and latency -->

  <!-- Monitor for management agents and remote administration -->

Note that the ENTITY definitions come before the start of the “normal” XML for the file, i.e. in front of the initial <poller-configuration> tag.

This can make the management of unwieldy files a little easier.

Again, this only works for code that you can lift out in its entirety. In the case of poller-configuration.xml we still put the <monitor> tags down at the bottom of the main file.

Ubuntu and the Huawei Mobile Broadband E173

I was recently in Sweden where we are doing a large project that I one day hope to tell every one of my three readers about in detail, but for now suffice it to say that they will have lots and lots of bandwidth in the coming months. However, in the apartment where I stay when I am there, there is no broadband network access, so they loaned me a mobile broadband modem.

Since Ubuntu is my distro of choice and the modem, the Hauwei E173, is fairly old, I figured it would just be “plug and play”. Jeff, who also visits the client, uses Fedora and said he had no problems.

However, when I inserted the device, nothing happened, or at least nothing appeared to happen.

I did manage to get it working, somewhat, so I thought I’d share my experience in case it helps someone else.

Now, what is supposed to happen, I believe, is that the device should show up in Network Manager as a Mobile Broadband device. I could never get this to work. During my investigation I found out that when you initially plug in the device it is mounted as a USB hard drive, and a program called “usb_modeswitch” is supposed to change it to a modem. Most of the information I found on the web was on getting that to work, but after a lot of trial and error it appears that it is working – Network Manager is just not picking up the change.

The device appears like this:

Bus 003 Device 002: ID 12d1:1446 Huawei Technologies Co., Ltd. E1552/E1800 (HSPA modem)

and dmesg shows the following output:

[ 4374.333592] usb 3-2: new high-speed USB device number 2 using xhci_hcd
[ 4374.354876] usbserial_generic 3-2:1.0: generic converter detected
[ 4374.355374] usb 3-2: generic converter now attached to ttyUSB0
[ 4374.355636] usbserial_generic 3-2:1.1: generic converter detected
[ 4374.355875] usb 3-2: generic converter now attached to ttyUSB1
[ 4374.362284] Initializing USB Mass Storage driver...
[ 4374.362498] usbcore: registered new interface driver usb-storage
[ 4374.362505] USB Mass Storage support registered.
[ 4375.436354] generic ttyUSB0: generic converter now disconnected from ttyUSB0
[ 4375.436478] usbserial_generic 3-2:1.0: device disconnected

So it looks like the device is attached as a usb-storage device and then disconnected.

How I managed to get it to work, somewhat, was to install the “wvdial” program. First, I created a file called /etc/wvdial.conf:

[Dialer defaults]
Modem = /dev/ttyUSB0

[Dialer telia]
Modem = /dev/ttyUSB0
Baud = 115200
Init2 = AT+CGDCONT=1,"IP",""
Phone = *99#
Username = *
Password = *
New PPPD = yes
Auto DNS = 1

[Dialer pin]
Modem = /dev/ttyUSB0
Baud = 115200
Init1 = AT+CPIN=xxxx

where “xxxx” is replaced with the PIN for the device, and now when I run “wvdial telia” I get the following output:

# wvdial telia
--> WvDial: Internet dialer version 1.61
--> Initializing modem.
--> Sending: ATZ
--> Sending: AT+CGDCONT=1,"IP",""
--> Modem initialized.
--> Sending: ATDT*99#
--> Waiting for carrier.
--> Carrier detected.  Waiting for prompt.
--> Don't know what to do!  Starting pppd and hoping for the best.
--> Starting pppd at Fri May 10 07:43:25 2013
--> Pid of pppd: 887
--> Using interface ppp0
--> local  IP address 90.x.x.x
--> remote IP address
--> primary   DNS address
--> secondary DNS address

At this point, I can use Thunderbird for mail and Chrome/Firefox to browse the web. To stop the session I just hit ctrl-C in that window:

^CCaught signal 2:  Attempting to exit gracefully...
--> Terminating on signal 15
--> Connect time 42.0 minutes.
--> Disconnecting at Fri May 10 08:25:29 2013

Now certain programs, such as Empathy, that seem to check with Network Manager on whether or not there is a network connection, don’t work. But for the small amount of time I find myself in the apartment and in need of network access, it will do.

Hope this helps, and if anyone has suggestions on what I’ve done wrong with Network Manager, let me know. Note that I am running Ubuntu 12.04 LTS on my laptop – perhaps it works better with later versions.

Review: The HWg-STE Ethernet Thermometer

Soon after my review of the AKCP Sensorprobe, I was contacted by Jan Rehak of the HW Group in the Czech Republic. I was asked if I would review one of their SNMP-based sensor units. I replied “of course” as I thought it was cool that anyone would want to send me an evaluation unit of anything, and I wanted to embark on my new career as super-duper, top-notch web reviewer-guy (are you listening, Telsa Motors?).

A few days later I received an HWg-STE Ethernet SNMP Thermometer, which is their most popular unit.

The HWg-STE supports two sensors, and it comes with one for temperature. The cable is pretty long so it can be placed some distance away from the unit. The unit is very compact, and molded into the case on the top and bottom are places for mounting screws. I installed it on the wall in the server room next to the Sensorprobe2.

One of the things I liked about the description was that it said it supported Linux for installation. Like most units of this type, the main configuration is done through a built-in web server, but a lot of vendors ship a small application to aid in the initial setup. The HWg-STE shipped with a CD that was Windows only (same as the Sensorprobe2) but I was able to find a Linux version on their website.

Unfortunately, I was unable to get it to work under Ubuntu 13.04, which is my current desktop at work. The application launched but failed to find any sensors. I did install the application via the CD on a Windows 8 machine we have in the office and it located the unit with an IP Address of I changed it to match our LAN addressing scheme and then did everything else from my desk using a web browser.

Once on the network, setup was a breeze. The webUI is very clean and easy to navigate. I was able to label the sensor which was also reflected in the data I was able to receive via SNMP.

Both the HWg SNMP MIB and a short OID description document are accessible from the “System” menu of the interface. The HWg-STE does support the ability to send e-mails when a threshold is reached, but I was a little disappointed with the lack of SNMP trap support. Also, like many devices like this, it only supports SNMPv1 – an SNMPv2 GETBULK request will fail. Like the Sensorprobe2 there is no IPv6 support.

It was pretty easy to add the device to OpenNMS for datacollection (and the configuration will be included in version 1.12):

The values returned are close to the values reported by the Sensorprobe2:

I don’t have any way to determine if one is more accurate than the other, but they both seem to be close enough for the accuracy needed to monitor a server room temperature.

Overall, I really liked the size of the HWg-STE and the look of its interface, but the missing SNMP trap support is frustrating. I would also like to see more information in the MIB, such as high and low thresholds, so that those can also be graphed. Proper SNMPv2 support as well as IPv6 support would be nice, but as much as I like IPv6 I am not seeing it as a requirement in the marketplace at the moment.

UPDATE: Jan wrote me back with some clarifications.

Of course we have other devices with SNMP Traps & more detailed MIB. But you know, product segmentation..

Our main product is the Poseidon family
Many more sensors, I/O, etc..

Yes we plan SNMP v3 + IPv6 to new generation Poseidon2.