Tag Archives: Ubuntu

WebSphere MQ and Ubuntu (and other developer resources)

For some time now, I’ve been using Ubuntu as my desktop operating system. Although I’m yet to be convinced by Unity (it’s getting there, the more I learn the shortcuts and stick with it), I do know that Ubuntu is a hugely-popular platform for developers – and I know that many of my colleagues at IBM who are in development roles choose our internal Linux-based client options (which cover a range of distributions), instead of Windows or OS X.

So, what about developing with or using WebSphere MQ on Ubuntu? Well, the officially-supported platforms for WebSphere MQ V7.0.x don’t include Ubuntu – that’s primarily a combination of the relative popularity of RedHat or SuSE Enterprise platforms in production deployments, time and resource spent on testing, and the fact that it would probably only be practical to test and support it on a Long Term Support release if it ever became supported.

However, it is possible to get WMQ installed and running on Ubuntu without jumping through too many hoops. The primary stumbling block is that the software is packaged in RPM format rather than in Debian/Ubuntu-friendly DEB files. One piece of advice is to avoid any guides that suggest converting the packages using alien… it may seem unusual, but you’re likely to find it far easier to get it working by installing rpm on the system instead. My colleague Rob Convery has posted a couple of very useful blog entries on this subject which I’d recommend if you have a need to get yourself running on Ubuntu – again, bearing in mind that it is not an officially supported platform, and that should you encounter issues then it might be necessary to reproduce them under RHEL or SLES when raising a service call with IBM.

 

There are other ways to get to use and learn about WMQ too, of course – for example, you could grab one of the IBM Industry Application Platform cloud images to run on the IBM SmartCloud or Amazon EC2 (containing WAS V7, DB2 Express-C 9.7, and WMQ V7.0.1, running on SLES), or you can try a number of the WMQ family products in IBM’s SOA Sandbox, (including WMQ File Transfer Edition, and WMQ Advanced Message Security). You can also check out the MQonTV YouTube channel. Let me know what you think!

OggCamp approaches!

I’m getting quite ridiculously excited about an upcoming event…

I’m good friends with the team from the Ubuntu UK Podcast and have been privileged to be invited onto the show as a guest host twice now. They’ve partnered with the Linux Outlaws to create OggCamp for the past three years and this year, finally, I’m able to attend. I admit that it helps that the venue this year is reasonably local for me! I’ve also volunteered to assist as official Crew for the event, so I’ll either be very visible, or barely visible at all :-)

I’ve blogged fairly frequently about my OSS, Linux, podcasting and social passions so I imagine it’s not a huge surprise to regular readers that I’m excited to finally have an opportunity to be involved. Laura has written about the rapid run-up to the event, and I hear that tickets may be becoming available from returns at the moment, so if you are interested it is worth checking back. I’ve also set up the OggCamp 11 page on Lanyrd if you want to add the event feed to your calendar. I’m also fairly certain that a good gaggle of MQTT geeks will be in attendance (the mosquitto project was born from the first OggCamp in 2009), so I’m looking forward to meeting folks!

Prototyping – Arduino and Ubuntu

UNO

My Arduino Uno board, via instagr.am and iPhone, on Flickr

One of those things I’ve been meaning to getting around to doing for ages is to explore this exciting new world of prototyping and hacking my own hardware devices together. A lot of my fellow eightbars and of course many of the HomeCamp community are big fans of the Arduino platform. I’ve also been dying to have a go with the MQTT client for Arduino that Nick has created (although I’ve recently also come across another platform called mbed, and MQTT has been ported to it, of which more to come soon). In fact, I’ve had one of the lovely Arduino starter kits from ::oomlout:: sitting on my desk for a while now, tempting me with its gadgetry and neatly-arranged components in a funky partitioned box… but life has been so hectic that it has taken me until today to finally crack it open!

I’m not going to spend long talking about the Arduino today, except to mention that it was unexpectedly tricky to get working under my OS of choice, Ubuntu 10.10. I’d read on Anton’s blog recently that the new UNO board (which I have) needed a firmware update in order to avoid some weirdness on the serial port, so I thought I’d go ahead and fix that first – his instructions were very clear, and the device seemed to report something, well, expected as I ran the commands. All good, or so I thought!

This is the official Icon introduced for the l...

Image via Wikipedia

I installed the Arduino IDE from the Ubuntu repository and attempted to start it from the new Electronics submenu. Nothing happened. At that point I decided to try running “arduino” from the command line, and got back a Java stack trace containing java.lang.UnsatisfiedLinkError: rxtxSerial indicating an issue with some of the libraries. At that point a quick DuckDuckGo search (yes, I’m not using Google much these days) led me to an Ubuntu PPA which contained a fixed version of the IDE.

I was then able to fire up the toolkit and excitedly started looking at the Basic samples. However, as soon as I tried to upload one to the board, I got an error avrdude: stk500_recv(): programmer is not responding which suggested that the board was not being “seen” by the IDE. The only interface the toolkit recognised was ttyS0 and I knew the Arduino wasn’t there… looking in /var/log/messages I could see that it created an interface /dev/ttyACM0 when I plugged it in, but the toolkit wasn’t seeing that. I then tried creating a symlink from /dev/ttyUSB0 (where the wikis and documentation were telling me to expect the Arduino) to /dev/ttyACM0 – and presto, it worked.

Creating static symbolic links in /dev is a bit hokey these days, of course, so I moved across to udev and created a new rule for the UNO in a file called /etc/udev/rules.d/80-arduino-uno.rule

KERNEL=="ttyACM*", ATTRS{product}=="Arduino*", SYMLINK+="ttyUSB%n"

dead simple: if a new device pops up in the kernel named ttyACMsomething, and it has a USB product ID string starting Arduino (which mine does, I checked using the command usb-devices), add another symlink to it at ttyUSBsomething, thanks. Result:

Dec 21 19:18:50 agrippa kernel: [21501.209012] usb 1-1.1: new full
speed USB device using ehci_hcd and address 17
Dec 21 19:18:50 agrippa kernel: [21501.303198] cdc_acm 1-1.1:1.0:
ttyACM0: USB ACM device
andyp@agrippa:/etc/udev/rules.d$ ls -l /dev/ttyU*
lrwxrwxrwx 1 root root 7 2010-12-21 19:18 /dev/ttyUSB0 -> ttyACM0

That all seems to have done the trick. I’m just waiting on a couple of shields for the board, not least something that will let me connect it to a network, and then the experiments will continue! Weather-permitting the next lot of electronics should appear in the next day or so. More to come, on both Arduino and mbed hackery…

Podcasting with UUPC (and podcats)

On Monday I was surprised and delighted to be asked to join the team from the Ubuntu UK Podcast (aka @uupc) as a guest presenter. I’ve been a listener and friend of the show for a long time, I knew several of the regular team, and since I work not far from “Studio A” it was fairly straightforward to jump in at short notice.

I had a blast recording with Tony, Laura and Mark! The amount of work and polish that goes into each show is fantastic, I can tell you. I was also very impressed with their studio setup. My own podcast is recorded using Skype, and although I do own a small mixer, it’s really nothing compared to Tony’s much larger desk. Each of us had a proper mic, too. Oh, and there was a Very Large Clock. There was also a small experiment in streaming to a small audience (the magic-fu was served up on Twitter and in the #ubuntu-uk-podcast IRC channel, so you should hang out in those places in case it happens again!).

Most importantly, we were supported by the UUPC PODCATS.

I gave a brief intro to myself at the start of the show. If you’ve just discovered me via my guest appearance on UUPC then feel free to follow me on Twitter or read more about me here on my site.

Below, I’ll just recap and expand on my Linux credentials, because it’s not something I’ve really blogged about before.

My Linux experience

I started out using Linux with some early SuSE version in the late 90s just after leaving university. Then I switched to RedHat, which was in the phase of spinning out the Fedora project, and I did some packaging for a few projects there for a while. I helped out on a bunch of projects around that time, like OpenUT (the initial Unreal Tournament port to Linux – there’s a special thanks to me in the credits for the Linux version!), the brilliant Anjuta IDE, and the Bible software GnomeSword (which is now known as Xiphos). I spent a lot of time helping to do things like triage bugs, coordinate releases, polish the UI for GNOME apps like Anjuta, and basically to some extent “project managing” alongside the actual project leaders, freeing them up to code on their projects while I took on a more technical coordination role communicating to different developers, helping with test, etc.. At the time I was a middleware developer for a large company so I had an appreciation of how things like CVS worked, how to do releases and release notes, working with users etc. – things that are sometimes missed on OSS projects, although all of these things have become better over time. It was a great way for me to deepen my UNIX skills and hone my development abilities too. Plus, I built some great relationships and friendships from working with the community.

Times change, and I had to take a step back from all of that for quite a long time. Although I had a Linux box at home as a server (on dial-up for a long time… yikes!), I otherwise wandered the wastelands of Windows XP and then got a Mac. Fundamentally I believe I see the good and bad aspects in most systems; I believe it’s important to at least try something, and not dismiss it; I did go through a strongly anti-Microsoft phase but with things like XBox 360 Live, a few items in the “Live” family of software, and their new phone operating system, I do have respect for what they’ve done. I struggle a little on the whole “openness” thing – my tendency and first preference is absolutely towards open standards, open source and free collaboration, but then along comes Apple with stuff that just… works… and is so… shiny… and… I’m almost willing to suspend that view. And then I smell coffee and come back to my senses :-)

So what am I doing now? Well, last year I switched to Ubuntu on my work laptop, a Lenovo Thinkpad, and I’ve been through Jaunty, Karmic, Lucid and now Maverick. I do NOT have a Windows partition, I run my whole work life in Ubuntu. I’ve got a Viglen MPC-L (previously featured on UUPC, of course!) running home and weather monitoring with some software called MQTT which I’m involved with as part of my job. I run Linux on my “set-top box”, an Acer Aspire Revo inspired by Popey, with Boxee and other bits. I have a netbook, a first-gen Acer Aspire One running UNE Lucid until they sort out Unity to a point where I feel it’s usable. And, as I mentioned on the show, I’ve recently picked up a cheap (actually, total bargain) Android handset as a development platform- my main phone is one of the Apple devices, sorry! The new phone is an Orange San Francisco, which is a rebadged ZTE Blade – I’ve flashed it to run Android 2.2 and moved a bunch of apps into SD storage, and it’s a lovely little device. Apart from that, I help to do a few things for internal Linux apps we use at work on Ubuntu, and I buzz around Launchpad largely helping to improve quality via bug reports etc. Oh, and I’m lined up to speak at LinuxConf AU in January! (very excited about that!)

So that’s me. I do Linux, I do Ubuntu, and I do a whole bunch of other stuff. Thanks again to the UUPC gang for not throwing me out of the studio! And thank you, dear reader, for listening…

OS X mosquitto “bites”…

In my post last week about the new MQTT support coming to WebSphere MQ I very briefly mentioned that there are some third-party tools that already implement MQTT. One of those I pointed to is the very neat mosquitto broker, a project started by Roger Light.

mosquitto has been around for a while now and is aiming to replicate the functionality of the Really Small Message Broker that is on IBM alphaWorks. One of the neat things about it, from my point of view, is that it there is an Ubuntu PPA repository, so with a couple of apt commands, I can install a running MQTT broker and build my own applications independently (NB there are packages for other Linux distros too, as well as Windows). When I want to do some “heavy lifting” or share data with my ESB, I connect up my local mosquitto broker to pass messages across to WebSphere MQ through the new telemetry channels – because MQTT supports a concept of bridges, and both RSMB and mosquitto both include support for bridging.

I noticed that there wasn’t yet a version available for Mac OS X but figured that it shouldn’t be too difficult to compile and run it on that platform. As it happens, it did turn into a bit of an adventure for a couple of reasons, but at least I learned from the experience. If you’re desperate to build yourself a version to try some MQTT development on the Mac, here’s what I had to do to get it going on Snow Leopard:

  1. Installed mercurial, and a GUI for it called Murky (which requires the hg command line tool from the base mercurial package). The sources for mosquitto are in bitbucket, a Mercurial repository… this is optional of course as I could have just used a source tarball.
  2. Grabbed the latest mosquitto source from bitbucket.
  3. Modified the Makefiles throughout the mosquitto tree to build libraries with a .dylib instead of a .so extension (the default on OS X), and also changed the -soname parameter to -install_name which the OS X version of gcc understands.
  4. At this point the compile was starting to show progress… but failing due to missing symbols… the offender being one from sqlite, _sqlite_enable_load_extension. Turns out that the version of sqlite shipped in OS X 10.6.x is 3.5.4 but it does not have extension loading functionality built in, as evidenced by nm -g /usr/lib/libsqlite3.dylib | grep 'sqlite3_enable'
  5. Downloaded sqlite3.8.0, configured it to install to /usr/local (to avoid overwriting the default OS X shipped version), and built and installed it with no issues.
  6. At this point the compile was pretty smooth, once I modded Makefile link and include lines to point to the new version of sqlite in /usr/local. The only thing that failed was documentation, but that was “optional” :-)
  7. Trying to start the broker failed… because it was trying to load the sqlite3-pcre extension.
  8. Installed git (the source for the sqlite3-pcre extension is in a git repository).
  9. Grabbed the source for sqlite3-pcre and built and installed it using:
    gcc -shared -o pcre.so -L/usr/local/lib -lsqlite3
              -lpcre -Werror pcre.c -I/usr/local/include
    sudo mkdir /usr/local/lib/sqlite3
    sudo cp pcre.so /usr/local/lib/sqlite3
  10. The final issue was that the path to the pcre extension is hard-coded into mosquitto/src/conf.c so I modded that to point at the version in /usr/local and recompiled. I’m assuming that this would not generally be required, but it worked as a hack to get me going!
    D’oh. Just realised that this is precisely what the ext_sqlite_regex variable in the mosquitto.conf file is for. Shouldn’t have bothered!

So that was it. Being fair, if I hadn’t been feeling my way through that, I would have installed git and mercurial, grabbed all the lib sources for sqlite3 and pcre and built them, built mosquitto, and been good to go. At this point, the broker and test clients are runnable (assuming the library paths are set up appropriately):

DYLD_LIBRARY_PATH=/usr/local/lib ./mosquitto
DYLD_LIBRARY_PATH=../lib ./mosquitto_pub -t test/andy
        -m "hello world"

If you are interested in seeing this in action, here’s a short (and silent, but annotated) screencast:

The Java GUI application you see in the screencast is the test client shipped in an old IBM SupportPac, IA92, a Java implementation of MQTT. The final release of the WebSphere MQ Telemetry component for WebSphere MQ will contain something similar, considerably enhanced and integrated into WebSphere MQ Explorer.

In other news, Roger recently announced version 0.8 of mosquitto, which now has slightly different packaging and includes C, C++ and Python clients. I hope to give these a test drive shortly!