Dipping My Toe Into the Android Pond

Apple has made me lazy. For my first purchase from the Google Android Market, I got scammed.

As part of my #noapple experiment, I will eventually give up my iPhone. The only real alternative would be something powered by Android, so when woot put a refurbished XOOM tablet on sale a few weeks ago, I bought one.

I didn’t have a need for a tablet. Between my Macbook Air (soon to run Ubuntu) and my phone, I didn’t need anything in between, but in the interest of exploring Android I figured this would be a cheap way of doing it.

So far I like the XOOM. It came with 64 GB of storage and it was easy to add another 32 GB with a microSD card. I immediately downloaded the K-9 mail client (one of the best F/OSS applications on Android) and was soon browsing my e-mail. Well, up until the point my IMAP server got upset and threw a “too many connections from the same IP” error since I was checking mail from my desktop, laptop, phone and now tablet all at the same time.

Now, one of my favorite games for iOS is Plants vs. Zombies from PopCap Games. Without thinking, I went to the “Store” section on the XOOM, typed in “Plants vs. Zombies” and bought the app for 99 cents. It downloaded pretty quickly but when I launched it all that was displayed was a screen with familiar PvZ images stating that it would take awhile for the “levels” to be downloaded.

That should have made me suspicious, but I was tired and I didn’t think about it until it was too late.

See, the Google’s Android Market allows you to return any purchase within 15 minutes, so if a scammer can keep you from returning it within that time period, it becomes very difficult to get your money back. By they time I thought to investigate, that time had passed.

When I did investigate. I saw that the “publisher” was a company called NCM, not PopCap. It seems they have but several well known “apps” into the Marketplace, and my guess is that they are all scams (clicking on the “publisher’s website” takes you to NCM.com, which appears to have nothing to do with Android software).

Once I visited the proper PopCap site, I saw that they sell their software on Amazon’s App Store for Android. The game I downloaded from there worked as expected.

Does this make me want to chuck my XOOM and go back to Apple? Not really. Dealing with Apple has made me lazy, but this doesn’t mean that there can’t be trusted places to buy software for Android. I’ve spoken a number of times about the idea of reputation in free and open source software, and from this experience my trust in Google’s Marketplace has gone way down, and my trust in Amazon’s App Store has increased. Plus, now when I shop on Amazon, it immediately checks the application’s compatibility with my device, which is cool and adds an extra layer of comfort.

One could defend Google, but while I can’t expect them to police every submission, one would think that high profile games such as PvZ could be monitored. While I have submitted a refund request to the developer, my guess is that nothing will happen and they are just hoping people won’t sweat losing a buck.

They obviously don’t know how stubborn I am.

If this charge isn’t refunded by the time my credit card statement shows up, I plan to dispute it. By providing a marketplace, Google is accepting some responsibility for the third parties for which it acts as proxy. I’ll let them and my credit card company sort it out. For example, on a recent purchase through Amazon from a third party, I received the wrong item. Amazon quickly sent me a shipping label and refunded my money, even though it was not their mistake. I’m sure they have some method for resolving things with the vendor, but as a consumer it is not my problem – unlike my experience with Google’s Market.

In the F/OSS world it is as much about service as it is software, and those companies with the highest levels of service will be successful in the long run. If the Android Market is the wild west, I guess the Amazon App Store is the new sheriff in town.

Export iPhoto Library to Folders

Just a quick update on my #noapple efforts.

I work on three main machines: a desktop at the office, a desktop at home and a Macbook Air.

A couple of months ago I started using Ubuntu (Naughty Nightnurse) at work, and I figured I’d wait until 11.10 Onanistic Oliphant was out before upgrading the other systems. I need to write a long post about my decision to use Ubuntu and what I like and dislike about it (no screensaver in 11.10, seriously?) but I’ll have to save that for later. This weekend I got my iMac at home to tri-boot OS X, Windows 7, and Ubuntu.

But for now I want to talk about an iPhoto replacement. I’ve looked at several and I’m leaning strongly toward Shotwell. However, this requires that the image files exist outside of the iPhoto database. I tried just selecting and exporting all of them, but it appears that since several photos have the same name (the default numeric name provided by the camera) the newer files were overwriting the older ones. Kind of a pain when you have around 10,000 images to export.

Through the magic of Google I managed to find a nice little script that will export the images from the iPhoto database into Folders based on events. You can find it on Github, but basically just run:

curl https://raw.github.com/BMorearty/exportiphoto/master/exportiphoto.py > exportiphoto.py

and then

python exportiphoto.py ~/Pictures/iPhoto Library/

I strongly recommend running it in test mode by adding a “-t”. I didn’t realize it, but my iPhoto database had some corruption, and yes, this was after all of the cleanup options available when starting iPhoto while holding down the Command and Option keys.

The problem was in the iPhoto AlbumData.xml XML file. Two of my images had a file type of “^@^@^@^@” instead of “JPEG”, but the real pain was that about 100 photos, around 1%, simply didn’t exist. While there was a thumbnail, there was no image file:

<key>ImagePath</key>
<string></string>

I hope they weren’t anything important.

Anyway, once I corrected the issues in the XML file, the script completed in test mode, and then it did it’s magic and exported all my photos into nice folders, all ready for Shotwell or whatever product I decide to use.

Training Announced in London

Just a quick note that we are delighted to be able to schedule our week-long OpenNMS training course for London, the week of 28 November.

https://www.adventuresinoss.com/training

Our host is the Girl Guiding Association, the UK version of Girl Scouts founded by Robert Baden-Powell, and also an OpenNMS user. The room we will be using for training is smaller than the one we had in Reading earlier this year, so space is limited. Hope to see you there.

Juniper Networks Includes OpenNMS in Junos Space

We’re very excited to be able to announce that Juniper Networks has licensed OpenNMS through the “Powered by OpenNMS” program to bring Fault and Performance Management to their Junos Space management application.

The full press release is now online. We met with them at Dev-Jam this year in Minnesota, and things progressed rapidly from there. The fact that a company with such a solid reputation as Juniper would choose to make OpenNMS part of its product suite should go a long way to validating the work we’ve done with the project, and I look forward to working with them for years to come.

NetCologne

I spent last week (the last of my three week trip to Europe) in the German city of Köln (Cologne). I’ll probably keep referring to it as “Köln” since I just figured out how to easily print special characters on my Ubuntu desktop. (grin)

I was working with a service provider called NetCologne, specifically on a project where they are rolling out a Fiber to the Building (FTTB) project. Ronny Trommer, one of our guys in the European office, did most of the heavy lifting, but I was there to help out (at least in the beer drinking capacity).

We needed to monitor and collect data from a growing number of remote devices, and when I last checked we were polling 26110 distinct devices and 51690 interfaces. One thing that came in handy with this deployment was the Instrumentation Log Reader.

If you haven’t seen this feature, you should check it out. Under Admin there is a menu item called the “Instrumentation Log Reader”. This will generate a very useful report from the instrumentation logs concerning how many devices are being scanned for data collection, how long it takes each scan to complete, the time period between scans and the number of failures.

At NetCologne with 300 threads (the default is 50) the system was not able to poll fast enough to provide five minute samples, so we needed to increase the number of threads. While it was not easy to do a weighted average, it seemed that a conservative estimate would be about 10 seconds per device to perform collection. There were some of them in the 20-30 second range, and quite a few below 5 seconds, but for calculation purposes 10 seemed like a good number.

This meant that each thread could collect on six devices a minute, or 30 devices per five minute period. Since we needed to collect on 26110 devices, that meant we needed a little over 870 threads. We made it 1000 just to be sure, and then data collection started performing well.

A lot of the time was spent integrating their internal systems with OpenNMS through the provisioner. Much like Towerstream, any service provider with this many devices needs to be able to automate adding and removing devices to their management system. I am certain that the strength of our provisioning system is the one major reasons large enterprises and carriers should consider switching to OpenNMS.

On my last night in Köln I was taken out to a brewery near the Cologne Cathedral, or Dom, to partake in large amounts of the local brew called kölsch.

I found out on Google Plus that a number of people have very strong opinions about the quality of that particular beer, but I liked it. It was very light and clean, which was helpful in that we drank quite a bit of it. It came to our table in a “ring” of glasses:

and we went through several rings (I lost count).

No matter what you may think of kölsch, I don’t think anyone can deny the beauty of the cathedral:

Even at night covered in part by scaffolding, it is a gothic, fractal masterpiece.

I had fun, and I look forward to the opportunity to go back as this project progresses.

Here In My Car, I Feel Safest of All

This week I doubled the number of countries outside of the US in which I’ve driven a car.

Previously, I had driven in Canada and New Zealand. Canada doesn’t really count. Sorry to sound like a bigoted American, but the experience was no different than driving in the US. New Zealand was a much different story, since they drive on the opposite side of the road.

This trip I added Austria and Germany to the list.

As I’ve mentioned, I spent this week working with Antonio. He flew up for Uwe’s wedding and we drove down to Italy to do a Greenlight+ project. His flight back was at 06:00 Saturday morning, so we needed to leave Vipiteno and get him back to Germany Friday night. Considering that it was at least six hours and we were leaving at 16:00, I offered to drive so he could relax and maybe sleep.

Plus, I would get to drive on the autobahn.

Antonio drove for the first hour, getting us out of Italy and halfway through Austria. The weather was grey and wet, and as we climbed into higher elevations it started to snow.

Before we left, I asked for a few CDRs to burn some music. For some reason that escapes me, modern car manufacturers are still reluctant to put an AUX jack in their stereos. With so many people carrying portable music devices and being able to play music from a phone, you would think this would be a common practice. The reason I bring this up is that Antonio surprised me several years ago by breaking into song. This isn’t unusual for an Italian, but the song he was singing was “Supper’s Ready” by Genesis. It’s over 23 minutes long.

So that is how I found myself riding through the Austrian Alps in the snow while listening to that prog-rock classic “A Lamb Lies Down on Broadway“. Antonio also had to suffer through me singing along with James Taylor on his “Greatest Hits” album – one that I know every lyric, pause and breath having listened to it endlessly in high school.

Anyway, we were lucky that we left early enough that the temperature was above freezing and nothing was sticking on the roads.

When we crossed into Germany, I was finally driving on the fabled German highway without speed limits. This had almost mythical significance to me, as at one time in my life I was really into cars, so much so that I read Autoweek, and my friend John and I used to race to the mailbox so that we could read the Satch Carlson column.

Note: For those of you who have never heard of Satch Carlson, he is one of the best auto sports writers I’ve ever read. I would literally choke from laughing so hard at his stories. Unfortunately, he was involved in a scandal involving one of his students, and he pretty much disappeared after that. There is still an ancient website that is worth checking out if you want to see what was cool in websites 20 years ago.

Back to the autobahn. The experience did not live up to my expectations.

First, you have to understand that in most places the autobahn is two lanes. The right lane is where the trucks are, and they have a legal top speed of 80 kph. The left lane is where you can pass and go as fast as you want.

Or should a say “as fast as you can”. I wanted to go a lot faster.

Second, I was in a rented Mercedes A160. The car I usually drive is a supercharged C230, which is much faster than this car, so moving from the right lane to the left was not without a little risk.

If you look up the “0 to 60 mph” specification for the A160, Mercedes has written in the word “yes”.

Often I’d move over to pass only to see a set of headlights magically appear in my rearview mirror, prompting me to get back over as quickly as possible to avoid getting squashed. I swear some of those headlights were tinted blue.

Third, around the time we got to Ulm (birthplace of Albert Einstein) the amount of traffic had increased greatly and we were all forced to slow down. By Stuttgart, it was “stop and go”, or should I say “stop and go like hell”. There was a lot of construction, and coupled with the weekend traffic it was pretty high stress.

The way I dealt with it was the way I deal with any unusual situation in which I find myself. I find someone who looks like they know what they are doing and mimic them. So I’d get behind a car and do what they did – speed up when they sped, move over when they moved. Worked pretty well as long as I could keep up.

Finally, once the traffic started to thin, there were these road projects that would cause the entire highway to shift over to the left. Southbound traffic was limited to two lanes, while we took over the shoulder and one of their lanes. Separating our leftmost lane from theirs was a little temporary wall that stood about two feet high and looked like you could push it over with a finger. It was only as wide as the line drawn on the road, which meant that you were always perilously close to the oncoming cars as well as not having much room between that wall and the cars on your right. Seriously, the A160 is not a big car but at times it felt like I was driving a Winnebago. I wouldn’t have felt much more comfortable on a motorcycle.

Anyway, according to the GPS, Antonio had hit a top speed of 169 kph on the way down, so I was determined to top that. After driving for about a mile on a nice, flat stretch of highway with the pedal completely pressed to the floor, I managed a measly 170 kph, or a little over 105 mph. I was hoping to hit at least 200 kph, which is close to the highest speed I’ve ever driven (and that was on a motorcycle), but unless I was going to get a head start coming down a mountain with a decent tail wind, it wasn’t going to happen in an A160.

The Leitner Group

It worked out that after the training week in Fulda, a new client of ours wanted to start the first week of their Greenlight Plus project, so I just stayed in Europe another week.

Headquartered in Vipiteno, Italy, the Leitner Group is one of the two largest producers of “ropeways”, what we would probably call ski lifts and gondolas. Through a number of mergers, their products have grown to include snow grooming equipment, other passenger transport (through their Sigma subsidiary, they built the cabins for the London Eye), as well as small wind turbines (with the awesome name of Leitwind).

It was because of this recent growth that OpenNMS was needed to replace their Nagios instance that just couldn’t be used to manage the 600 devices spread out across 60 or so locations. It was a fun project, made even more so by the fact that Antonio Russo, our go-to man in Italy, worked on it with me.

I am planning on writing up a more detailed post on the transition, but it was pretty straightforward. OpenNMS was used to replace Nagios, Cacti and Smokeping, and with only two exceptions we were able to replace the Nagios “check scripts” with built-in OpenNMS monitors. For the ones we couldn’t migrate we just used the General Purpose monitor and ran them as external programs. Since Nagios runs all of its checks as scripts, it must fork-exec each one which severely limits its scale. All of the OpenNMS monitors run inside the OpenNMS process itself (well, with the exception of the GpMonitor), and the fact that you can also do data collection and event management without extra integration steps was a bonus. Antonio took the Nagios configuration files and ran them through a script which automated moving the devices into OpenNMS using the provisioner, so it was pretty simple to get the nodes into our application.

Working at Leitner was fun for a number of reasons. First, the technology is cool. If you have ever been on a ski lift you know that the speed of the cabin changes when it reaches the ends so that people can get on and off, and this is usually accomplished by having the cabin disconnect and then reconnect from the main cable (which moves at a constant speed). The equipment that does this is pretty complex, not only due to the size and weight of the components involved, but also due to the safety concerns (don’t want to be dropping your paying customers).

Second, working with the client, Michele, was a lot of fun. I’ve often bragged about the fact that OpenNMS users are self-selecting. We don’t go out of our way to market the application, so the people who find it, download it, install it and decide that they want to spend money on services are pretty special. They are all amazingly bright people, friendly and witty, and without exception tend to be very good looking.

(grin)

Third, Vipiteno is an incredibly beautiful place. Nestled in the Italian Alps, it is a very clean and walkable town. It has a split personality, since for much of its history it was located in a German speaking country. Like Canada, almost all of the signs are in two languages, and when I am talking about it to Germans I have to refer to it by its German name of Sterzing.

The whole week I had to keep reminding myself that I was actually at work – getting paid to have this much fun seems criminal.

On Wednesday, Antonio drove us down to Bolzano to visit some of his friends. As you cruise down the highway, it was not unusual to see castles – old school, Holy Grail, storybook castles.

Whenever you saw one, you often could look across the valley and see another. I keep wondering if they ever went “Game of Thrones” on each other, and thought about the logistics of waging war in this terrain.

Yes, I’m a bit odd, I realize that.

Unfortunately, it got dark so I couldn’t enjoy much of the countryside. Most of the castles were illuminated with exterior lights, however, so they seemed to float in the air as we sped past.

Bolzano was a cool place – a much larger city than Vipiteno. One of Antonio’s friends works for the hockey team, so we got to see them practice.

According to Wikipedia, the Bolzano-Bozen Foxes “is the most successful team in the history of the Italian ice hockey league, with 18 championships.”

It was a fun visit, although we stayed out so late that it made getting up on Thursday a lot harder.

Thursday night we visited another city, Trento, about 50 kilometers further away than Bolzano. It was a business meeting with a potential client, and I hope to be able to talk about that project soon. Driving back it started to rain, and thus we woke up on Friday to see snow on the mountains.

Friday was my last day at the office (we had to drive back to Frankfurt that afternoon), so we spent the morning finishing up the migration. When it came time for lunch, I was expecting that we would take Michele out to a restaurant, but he had a surprise for us. We walked over to his house and met his family, and his wife cooked me the best meal I’ve had in Italy this trip.

Michele speaks at least three languages, his wife is fluent in five, and even his oldest son (who I think is around four or five) can speak three. I had a very nice conversation with him in English. Michele’s youngest son was sleeping, so I didn’t get to spend much time with him, but even at two he’s probably studying ancient Greek and Relativity. (grin)

It was a great ending to a wonderful week.

As I’ve mentioned before, there is something about the Open Source Way that brings vendors and clients closer than usual. I have even grown hate that term “vendor”, as I much prefer the term “partner”.

Or better yet, “friend”.