When Idealism Meets The Real World: Google Reader Was The Last Straw

There was a time when Google was the shining beacon of geekdom; when tales of their crazy interview process, fancy chefs, and 20% time were spoken of in reverent whispers.

I’m realizing now that I held onto that fantasy for a lot longer than was realistic.

While I love my freakishly good job at OpenNMS (work from home lots, open-source software, good people), Google is the one place I’d always thought I’d at least entertain if the right thing came along.

Last week, I got an email from a Google recruiter (I get one every year or so, just checking in). I told him the usual, that I wasn’t looking to move, but am always interested to hear about opportunities from Google. He responded back a few days ago, asking when we could talk.

Then they announced Google Reader was going away.

When I realized I was losing something that I spend at least 60% of my web browsing time in, I finally consciously reevaluated my feelings on Google. And then, I responded to the recruiter:

Hey, sorry it’s taken a bit long to . . . → Read More: When Idealism Meets The Real World: Google Reader Was The Last Straw

Share on Facebook

Schrödinger’s Bugs

Working on an open-source project teaches you a few things about dealing with software developers, and reporting bugs. I’ve been in the open-source world for a long time, and I remember when I first started out as a user of software, I felt glad to even have access to these tools at all, and I felt a reluctance to “bother” the developers with issues if I wasn’t sure it was only me.

The problem is, issues are a bit like Schrödinger’s cat: they don’t exist until the developer knows about them.

Since I’ve become a developer of open-source software and seen things from the other side, I have one request: err on the side of opening an issue. There’s nothing I love more than having an issue opened, and being able to fix it, and tell the user their problem is solved. It’s that kind of feedback loop that is one of the best parts of developing software without a marketing and sales department sitting between you and your users.

So without further ado, I’d like to point out a few comments in this vein. Note that when I say “issue,” it could be anything: a showstopper . . . → Read More: Schrödinger’s Bugs

Share on Facebook

Be Careful What You Match For, You Might Not Get It

So I ran into a really interesting issue in Java regular expression parsing while trying to work on an issue for a customer.

OpenNMS has the ability to listen for syslog messages, and turn them into OpenNMS events. To configure it, you specify a mapping of substring or regular expressions to UEIs (OpenNMS’s internal event identifiers).

The customer saw a huge drop in performance from 1.8.0 to 1.8.1. Basically the only change to the syslog daemon was a change to use Matcher.find() instead of Matcher.matches(). The problem was that they were making regular expressions like this:

foo0: .*load test (\\S+) on ((pts\\/\\d+)|(tty\\d+))

…which weren’t matching. So they changed it to put .* at the front, so matches() would get it:

.*foo0: .*load test (\\S+) on ((pts\\/\\d+)|(tty\\d+))

Upon upgrading to 1.8.1, they saw orders of magnitude slowdown. The reason is that when you haven’t specified an anchor, find has to figure out the “right” starting point for the match. In doing so, it spins a LOT, compared to matches() and its implicit anchors. It’s very expensive to scan all the way through the string, attempting to re-apply the regex, if it turns out there is no match. We . . . → Read More: Be Careful What You Match For, You Might Not Get It

Share on Facebook

Getting My Feet Wet: The OpenNMS iPhone App

I’ve been spending some spare time working on an OpenNMS iPhone app, and things are coming along just great. As many of you know, I do a lot of work with porting various UNIX C/C++ applications to Mac OS X, but despite now having many years of practice doing such things, I actually have very little knowledge of writing C/C++ code from scratch.

I’ve debugged many a bad header, but up to this point I could count the number of lines of code I’ve actually written where I need to manage my own memory on erm… well, 20 hands? OK, bad analogy.

Still, it was with much trepidation that I approached finally hunkering down and learning Objective C. The verdict is: not bad. I did have to go through some growing pains learning how scoping and memory management works, but it’s not as troublesome as I’d feared — and the class libraries are pretty robust. In a couple of weeks, it’s nearly feature-complete for what I wanted to get working for a 1.0 release. All that’s left is the alarm detail page, and being able to acknowledge alarms from the app.

. . . → Read More: Getting My Feet Wet: The OpenNMS iPhone App

Share on Facebook

The Open Source Philosophy (Continued)

The conversation has continued over at the 451 CAOS Theory blog. In response to my musings on intent, David Dennis asked a great question:

Benjamin,

A question for you (and Tarus). Is this topic important to you because:

You believe it’s an important marketing differentiator for the software you work on vs. competitors You believe it’s an important philosophical / moral issue worth evangelizing both

Tackling a) involves traditional marketing objectives around branding, awareness, messaging, positioning, etc. Not necessarily a cake walk, but certainly possible to make progress.

Tackling b) involves changing the way people think and behave, which is much much more challenging.

My response is:

Definitely both.

From a personal point of view, I’ve been involved in open source software since before the phrase was coined, so I do feel that it is at least a personal philosophical issue. BUT I’m also a pragmatist, and I know that arguing purely for philosophy’s sake will not convince anyone.

That said, that philosophy drives me to support the companies that I think are doing it “right.” I work for OpenNMS not just because I . . . → Read More: The Open Source Philosophy (Continued)

Share on Facebook

This Week in OpenNMS: Moving to a New Home

Since this blog is more about my own personal development on OSX, Fink, KDE, and OpenNMS, and This Week in OpenNMS is about, well, all of OpenNMS development, I figured it was high time to move it to somewhere more official.

Without further ado, I present to you: This Week in OpenNMS. Same bat-time, different bat-channel.

RSS is still available, but the url has moved here, rather than getting everything through my blog.

Please, update your links!

Share on Facebook

Share on Facebook

This Week (or Two) in OpenNMS, Friday February 27th

So I’m a slacker. But I have an excuse, really! I was having so much fun working on JSPs last Friday, that I totally forgot to write TWiO last week. OK, it’s JSPs, so I guess I’m lying about having fun, but I was really almost done with a new feature. 😉

Anyways, since I’ve gotten a little sloppy, I’m going to make it up for you, with a feature on the new Provisiond, which is shaping up quite nicely. And to show my shame, I’ve dubbed this week’s article: This Week (or Two) in OpenNMS.

But, to begin… What’s been going on for the last two weeks?

Project Updates New Node Page

Stable: Current Release is 1.6.2

1.6.2 is still the current release, and while there are a few fixes pending since it’s release, there are no immediate plans for a 1.6.3 yet.

Unstable: Current Release is 1.7.0

Commits have been speeding by on trunk as Provisiond moves it’s way into a feature-complete state. I’m still hoping we’ll get a 1.7.1 release out soon so people can give it a shot, but, well, we have to stop . . . → Read More: This Week (or Two) in OpenNMS, Friday February 27th

Share on Facebook

This Week in OpenNMS, Friday February 13th

Welcome to This Week in OpenNMS for Friday the 13th. It’s yet again time to take a look at what’s been going on in the world of OpenNMS development.

Project Updates

Stable: Current Release is 1.6.2

1.6.2 is still the current release, and while there are a few fixes pending since it’s release, there are no immediate plans for a 1.6.3 yet.

Unstable: Current Release is 1.7.0

Trunk has been moving fast still, and I hope we’ll get a 1.7.1 release out soon-ish, but we’re still trying to get provisiond up to a demoable state first. In the meantime, feel free to try the nightly snapshots (if it’s not on a production system, of course).

Trunk: Javamail Updates

Dave’s been working on refactoring our javamail support into it’s own module, to make it easier to reuse in different portions of OpenNMS.

Trunk: RANCID Integration

Guglielmo continued work on the RANCID integration; the API has stopped changing much and most of the work has been going on in the UI at this point.

Trunk: Provisiond

Matt has most of the provisiond code working, some simple scanning is possible . . . → Read More: This Week in OpenNMS, Friday February 13th

Share on Facebook

This Week in OpenNMS, Friday January 30th

It’s time for another This Week in OpenNMS. I will be skipping next week’s, as I’ll be too busy sunning myself in the caribbean and hanging out with a bunch of rockin’ bands on Ships and Dip V. Ahhhhh….

Project Updates

Stable: Current Release is 1.6.2

1.6.2 seems to be holding up nicely, although there have been some reports of issues with JMX thresholding that need to be investigated more deeply still. If you’re having issues and can add some details to the bug on the subject, it would be appreciated.

Unstable: Current Release is 1.7.0

Trunk is still moving crazy fast, so hopefully we’ll be getting another 1.7 release out there soon when a few things settle down, so people can help test. In the meantime, feel free to try the nightly snapshots (if it’s not on a production system, of course).

Trunk: Acknowledgement Daemon

Dave continues to make progress on Ackd in between crazy days at the TeleManagement Forum’s Team Action Week (more on that later). Hopefully it will be ready for folks to test it out in the next few weeks.

Trunk: Inventory Daemon

. . . → Read More: This Week in OpenNMS, Friday January 30th

Share on Facebook

This Week in OpenNMS, Friday January 23rd

Sorry I missed last week, I ended up having so much come up I didn’t have time to put it together, so this issue is an action-packed 2-week OpenNMS extravaganza!

Project Updates

Stable: Current Release is 1.6.2

On January 15th, we saw the release of OpenNMS 1.6.2 which included a number of small bugfixes and feature additions.

For the full list of what was changed, see the 1.6.2 bug milestone.

Unstable: Current Release is 1.7.0

The 15th also saw the first unstable release since 1.6 went stable. It is a work-in-progress release from trunk which gives a preview of the features to come in the 1.8 series. As 1.7.x releases come out, the release notes in the New and Noteworthy section of the web page will be updated with an overview of the new features which will be in 1.8.0.

Trunk: Provisioning

Provisiond is moving along, with lots more commits. Matt has been working on the scheduler and other infrastructure, and I’ve been working on the data model for the requisition (what nodes/etc. to import) and foreign source (what to do with the information imported). Things . . . → Read More: This Week in OpenNMS, Friday January 23rd

Share on Facebook