JBoss Release Grumpiness

This is a geek gripe. Particularly for Java programmers. If you’re not doing JEE development, this probably won’t make a lot of sense unless you like seeing open source companies being beaten up for version incompatibilities.
Hello, I’m Dave, and I’m a JBoss developer. (Hi Dave…)
Until recently, I was quite content with the series of tools available for JBoss4, and my chosen IDE, Eclipse. JBoss provided a lovely little plugin interface called JBoss IDE. I encourage people to click on that link, because you’ll walk through a series of redirects until you land on a page that, amazingly, has no information on where to get JBoss IDE! How wonderful!
It turns out that JBoss (now wholly owned by Redhat has pulled JBoss IDE in favor of another Eclipse plugin called Exadel. Fantastic, a new IDE plugin that has a lot more functionality than JBoss-IDE ever had. Lets take a look!
An hour later, and Exadel is installed and running and grand. But. Wait a moment, the latest version of the JBoss application server is 4.2-GA. That’s General Availability. Meaning the platform is released and is the recommended system for users.
Exadel has no configuration support for 4.2-GA. Only for 4.0.x releases.
And JBoss-IDE has been pulled completely (and even it’s ‘2.0.0-beta’ version, the most recent version they posted, did not support 4.2).
“Must be coming out shortly.” So I mailed off to Exadel tech support asking if there was 4.2 support in the works, or when it will come out.
I get a direct, and undeniable response from them:

Dave Belfer-Shevett wrote:
> > Exadel Support Team wrote:
>> > > Exadel Studio Pro is going to be re branded as Red Hat Developer Studio in
>> > > later summer. Red Hat Developer Studio will support JBoss 4.2 .
> >
> > So the answer is “no, it does not support 4.2 now, and won’t until late
> > summer” ?
That’s correct.
-The Exadel Team

Excuse me, but WHAT THE F??? We’ve pulled the old IDE toolset. We’ve released a new product. But you CAN’T USE IT WITH OUR IDE TOOLS! Hahahahha! And you won’t for a couple months. Sorry bout that, have a nice day.
There are workarounds. You can run the jboss server externally in a windows shell and deploy to it. This is a painful arrangement, but I guess I have no choice?
Thanks for leaving us all in the lurch, JBoss.

Enabling Relationships

I have to admit, there are times when having an enabling partner brings unexpected benefits.
In this case, my wife happens to work for Bose as a project manager, and as such as access to their employee discounts and specials. Because of her signing bonus, we have a lovely Bose Lifestyle 48 soundsystem to complement the Big TV. I would never have the money to be able to afford such an extravagant system, but it’s hard to argue with the discount.
Tonight I added some more pieces to the mix. We got some new speaker stands for the satellite speakers, and rewired the MythTV box a bit. The new stands look great!
Next step will be to use the new video switcher on the LS48 to route video and audio all via the Bose box. That’ll require ducking into the nest O wires behind the display. Something I’m really not looking forward to. :-/
One thing I am toying with though is calling up Comcast and upgrading our cable tuner to HDTV. The whole “we’ll stretch 4:3 to fit on an HD form factor” thing is getting wearing. Unfortunately, I’m guessing that Comcast is not providing boxes with enabled Firewire ports, so the usefulness of my MythTV tuner card is dropping daily. Damned corporations.
On the plus side, though, Ben has successfully aquired the HDTV cable for the Gamecube, so we’ll be enjoying true 480p signal shortly from that little puppy. Mmm, SSX3 in full glory.

MySQL Geekery du jour. Cannot open file error.

This one is going out to the world in general, because it took me 2 hours of googling to find it, and I want to lessen some poor other slobs pain…

MySQL , in this case on a Debian Etch (stable) install, has a limit set on the number of files that can be opened in the mysqld server. Apparently when you start getting close to this limit, like doing something that opens a LOT of tables at once, you start bumping into it. This article describes how to fix this.

Continue reading “MySQL Geekery du jour. Cannot open file error.”

Omgomgomogmg.

TOTAL geek squee.
Starcraft 2 is official. And it’s not a huge variation from the original game – updated after, what, 8 years, naturally, but same 3 races, new vehicles and ships, new engines, all that, but it’s the same game, redone.
Starcraft was one of the few games that totally sucked me in, and I still occasionally play it, years and years later.
The Wikipedia article on Starcraft II is under heavy editing right now, but the details are there.
I highly recommend watching the full cinematic trailer. It totally rocks.

KDE Gripe Du Jour

So this sure doesn’t make sense.
I like pushing my desktop around a bunch, seeing what it can do, what it can’t do. To me this is the way good software gets made. Use it, try to do what you want to do with it, find out where it fails. The trick in this approach is avoiding the “I want it to do what {XXX} application does, and do it JUST THAT WAY!” – that will ultimately result in failure. The question you should ask is “What am I trying to accomplish, and how would I do that with this tool?”
Today’s puzzlement was born of humble beginnings. I wanted to change the ‘new mail’ notification sound that Thunderbird uses. Simple enough, eh?

Continue reading “KDE Gripe Du Jour”

Days of Sunshine, Days of Clouds

The Linux environment is such a love-hate world for me. In general, it’s mostly love. All the tools I want, speed, eye candy, toys, productivity, it’s all there.
Then there are the cloudy days. When things that should work, don’t, and I can’t figure out how to make them work.
After a couple sunny weeks, I’ve hit the equivalent of spring showers, and the clouds have rolled in.
First, I’m having all sorts of performance problems with Thunderbird. I suspect this is down to some twitchy DNS problem, but I’ve never seen it before, and others have not seen it as well. Right now I’m in ‘suck it up and deal’ mode, but it’s infuriating waiting 5-6 seconds of total GUI lockup whenever I hit Alt-Enter.
Second, I’m still working on setting up the new replacement machine for my roommate. This is a bellwether project for me – can I replace a windows machine completely with Linux. For the most part, we’re ready to go, except I cannot get the VPN to their Windows server (a PPTP connection) to work properly. I had great hopes for a new KDE tool called KVPNC, but either due to the programs’ newness or traditional complexity of setting up VPNs under Linux, I have had no success. At the moment, this is a showstopper on the project.
And last night, I wanted to edit some recordings I had done with my minidisc recorder at band practice. “No problem!” sez I, “I’ll just use Audacity,” an excellent free multitrack editor. BZZT! Audacity refuses to talk ALSA properly, and I cannot play the tracks I’m editing. I’ve used Audacity many times under Windows, and I thought I had also used it under Linux, but now on startup Audacity is yelling about not being able to access the ALSA device. Various forums have said that is because ALSA has sound device locking issues (which I mentally flag as bogus – wasn’t ALSA’s point to allow multiple applications to access the sound device at the same time? Avoiding the dreaded /dev/dsp lock? Frustrating)
So I have 2 projects held up, and one constant, ongoing annoyance. And, over on the side, my windows machine running quite smoothly, without any of these problems.
I want the sunshine back.

Ubuntu Postfix relayhost configuring

This is primarily so I can remember how to do this. I have yawl set up as a postfix host here at Chez Geek, but my smart mailhost is actually off in colocation land.

So with my problems with Thunderbird still unresolved, it was time to try setting yawl up as a smarter mail client.

First things first, make sure postfix is installed. With Ubuntu, it comes installed by default, but not enabled.

Second, set up an /etc/postfix/main.cf file, and put in there:

relayhost = my.smarthost.name.com
myorigin = name.com

Obviously substitute in whatever domain you're using normally for 'name.com'.

Restart (or start) postfix:

/etc/init.d/postfix start

Make sure there's no problems:

tail /var/log/mail.log

And off you go!

Update : several hours later... this has NOT resolved the slow performance problem with Thunderbird, and its' maddening. T-bird on my windows box runs perfectly fast over an ssh tunnel to the same host (cept using securecrt there). Very frustrating

Ubuntu Feisty Fawn Upgrade from Edgy Eft

Ubuntu installerBefore I scooted off on my last business trip, I got the little blinky notification on yawl that a full upgrade was available from Edgy Eft, the Linux distribution I was using, to the latest release, called by version number ‘7.04, but referred to as “Feisty Fawn“. I thought it would be a bad idea to do an entire OS upgrade just before I left on my trip, so I deferred the process until I had some more time this week.
On Thursday I decided it was time to hit the button, and off I went.

Continue reading “Ubuntu Feisty Fawn Upgrade from Edgy Eft”

Windows USB Gripe dujour

A little further down the path spearheaded by my USB bus runneth over post, I’ve hit a snag that, while minor, is starting to infuriate me in that “little pointy bit in your clothing that keeps jabbing you” way.
When clipper is docked, the docking station links it up with the vast array of USB devices I have scattered about my desk. Windows usually happily gives me the ‘baDOINK!’ sound of “I just reconnected to something” and occasionally I’ll get the little popup window saying something has happened (like a network device came online).
Recently though, while the laptop is sitting idle, I’ll get the USB ‘baDINK…. baDOINK’ sound from Windows. This is the sound made when something disconnects and reconnects, usually via USB. Cept I haven’t touched anything.
Okay, fine, some USB device is in ‘marginal’ mode, or may not be powered properly, or I have a twitchy port. All I need to do is find out which device is it. So I went looking for how to do that.
And looked.
And looked some more.
There doesn’t seem to BE a way to find out what devices are connecting and disconnecting.
Sure, I can find out what Windows thinks is connected (My Computer->Properties->Hardware->Device Manager->USB), but that is a static reference. If the device disconnects while I happen to be looking at that screen, I’m not even sure if it’ll update dynamically. But remember, these disconnects are happening randomly. I’m not going to spend my day staring at a device screen. I have a life to live.
Okay, fine. Must be in the Event manager. A device being connected to the system or disconnected must log the event somewhere, right? Okay, off I go to the ever-so-easy-to-find Start->Settings->Control Panel->Administrative Tools->Event Viewer, where I see ‘Application’ ‘Security’ ‘System’ and ‘Internet Explorer’ (IE is apparently so important it ranks it’s own logging category. Go figure)
It was a good theory. These baDOINK / baDINK system events apparently happen without leaving any form of audit trail as to what’s happening. The Event Log shows things where I undocked and redocked the laptop, but there is no mention of any event around the time I -know- this sound was happening (Just after I went to bed last night, about 12:30am. It was easy to remember because it annoyed me, and I had to get up and turn the sound off on the laptop). Event log? “Nope, everything is COPACETIC man! Nothing wrong here!”
Grr.
As a last slap in the face of Windows, how would I diagnose this problem in Linux?
$ tail /var/log/messages
No doubt Microsoft will come out, sometime in the future, with a USB Logging and Analysis tool for debugging missing USB events – furthering their pattern of system ‘improvement’ via the whack-a-mole technique.

Another spike in my Treo joy

As if the week couldn’t get even more enjoyable.
I’ve been frustrated trying to find free wireless hotspots during my travels. Frequently I find myself parked outside my son’s school waiting for him to finish up something, and would like to get online and do, you know, those things I do online. Mail… and stuff.
Glancing at my Treo the other day, I did the “Hey, wait a sec. I have broadband access on that. I should just be able to use it as my modem and connect up. Piece o cake!” realization.
Hah. Fool that I was.
Apparently the Treo 650 does not function as a broadband modem in ‘tethered mode’ (ala, via a USB cable). The Treo 700w and 700p do, but, ya know, I don’t have either of those. I could probably have used the Bluetooth DUN (Dial Up Networking) function in the phone, which was put there explicitly for this sort of operation, but Verizon, in it’s infinite… well, Verizon made a decision to deliberately disable that function (no one really knows why they’ve done this. One would assume it would drive -up- usage of the phone and broadband services, which would benefit… Verizon. )
I could also get one of Verizon’s PCMCIA broadband access cards, but that would require me to renew my contract for two years, fork over the $50 for the card (though this card is now outdated, I should get a newer one for $100), AND up my data plan to the ‘unlimited’ plan, which would increase my bill by $50 a month.
At the end of which, I’d still be stuck with a phone that is rapidly aging, and will most likely need to be replaced in the next 12 months.
Interestingly enough, Verizon is continuing this policy even with the 700-series, by disabling the DUN functions, so you’ll buy another 3g subscription. Can you feel the love?
I have little reason to think I’ll stick with Verizon for my phone and mobile data usage come mid-June.

Build Your Own Electric Motor

This Sunday Zach comes into my room asking about how he can further his plans to build his own space ship. He was looking for motors and wings and combustibles. Boy is ready to go. After some discussion, he asked “Dad, I understand electricity, and how power gets to motors and batteries and lights, but how does the electricity make the motor turn?”
I hearkened back to my physics class days and remembered building my own motors out of nails, dowels, and simple power sources. A little digging on the net brought us to this series of pages, where you could assemble a small motor in about an hour using some wire, paperclips, a magnet, and a battery.
Zach was all over it, and about an hour later, we happily had a spinning rotor running on my desk. He understood how brushes are used to reverse the polarity of the rotor as it passes the magnet, and we had an example of a wire coil acting as an electromagnet. We also had a direct example of what happens when a motor gets power applied to it but is not actually turning, in the form of nice curling smoke. That was a nice object lesson, for sure.
All in all, a really interesting exercise, and I still like seeing the little spinning wire object whirring away. “I made that. Cool.”

Scrounging

I’m a scrounger.
I can’t help it, I love it. The joy and *squee* ness I have for something I acquire is made all the better if I get it at some amazing discount, or find it under a box of ‘junk’ and get it for a song, or get it via some bizarre wrangling where I end up with the better end of the deal.
Flea markets are the best for this. You can naturally divide flea markets into ‘tech’ events and ‘family’ events. The family ones aren’t as interesting for the piles of tech gear, but you do have the chance of someone unloading a piece of equipment they know nothing about. “Yeah well, grampa had this in his room, we don’t know what it is, it’s in German, you want it? $5.” – I’m sure someone has acquired an Enigma machine that way (I haven’t, but I still hold out hope.)
But the tech flea markets are the best. For me it goes back to my happy days attending the Trenton Computer Festival every spring in New Jersey. This was (and still is) an epic event – we’d plan for it for weeks, load up the trailer / van / car / truck / whatever, and arrive on site at some ungodly hour (usually in the neighborhood of 6:30am). The flea market didn’t open until 10, and in many cases, most of the best deals have already happened between the vendors by the time the general public showed up. It was great to see 4 guys go by hauling a big equipment cabinet “Dude! 2 RL02 drives, and controller!” “Hey, good find!” We’d frequently have radios rigged up “Bob, I found a pile of Unibus controllers in a 4 slot backplane. Need it?” “See if they have an RLV11 in there, okay?” “Right…” It was awe inspiring.
This week has brought up another scrounging opportunity though. In the last few days, I’ve been to 2 fire sales. Computer businesses that are closing out their stores and liquidating their inventory. Sometimes this makes for amazing bargains, but it’s totally the luck of the draw, whether you can spot something before someone else does, and how you time it.
The first one was a visit to the sad remains of Comp USA in Framingham. Probably one of the last of the ‘computer stores’ around (anyone remember places like Computerland?), CompUSA is closing a large number of their stores. This place had that “doom!” feel that many of these stores get as they liquidate. Any pretense of civility by the staff is gone, they just want to be done with it.
Unfortunately, CompUSA’s prices started at the astronomical level (which I’m sure contributed to their downfall), so when they advertise “20% off sale! Everything must go!”, it’s not exactly something you go charging into expecting massive bargains.
Regardless, I did score a few things. Picked up a copy of Black and White 2 and C&C Generals for around $12 each (normally they’re around $40), as well as a few other tidbits. Many of the things I might be interested in were either gone already (like a Nokia 770, or still ridiculously overpriced (ATI Radeon high end cards which RETAIL for $250 ish were marked down a whopping 15%. No thanks). I think they’re still there, still trying to get rid of stuff, I’ll try and stop over there tomorrow and see what’s left.
The other opportunity was a very small computer business in Watertown closing down. This was one of those friendly neighborhood computer stores, owned and operated by one person, that’s been around for years. The fellow had some problems going on, and decided to sell everything in the store for $1 a pound. Now we’re talkin!
Unfortunately, all the mail and notifications I saw said they were going to open at 1pm on Friday. I got there at the crack of 1pm, and probably 80% of the stuff was gone already. I waved hi to a few friends, and picked through what was left. In the end, I found a very nice aluminum hauling cart that was tucked under a table, as well as a box full of power strips, ethernet cables, and other handy tidbits. Total price: $42. Can’t really argue with that.
My next opportunity for scrounging will come when the MIT Swap Fest resumes in a few weeks. That’s always a load of fun, though it’s gotten somewhat uniform (the same vendors with the same things every month). Occasionally there’s gems there, and I go, as always, for the thrill of finding something Neat.

Subversion + SSH – Close but no banana

About a year ago, I switched my primary source code control system from the venerable old CVS to the (relatively) new kid on the block, Subversion. On the whole, I’ve been ecstatically happy with the system. It patched many of the ridiculous problems with CVS, and added on things that opensource community has been asking for for ages (like ‘rename’), but never made it into CVS.
Now I have all my projects stored in SVN, and my main client is using it as well for their code (they’ve chosen to go with SVN and are planning to End Of Life their VSS server – to the dismay of no one).
Subclipse
One of the best tools that made this switchover workable (aside from SVN’s similarity CVS in many respects, particularly on the command line) is the Subclipse plugin for Eclipse. Subclipse provides a great easy to use interface into SVN servers, giving all the functionaly one would have on the command line via a very simple, tightly integrated GUI.
One thing that had been bugging me, however, was the access methodology I was using to get to my (remote) SVN server. It involved setting up a tunnel in SecureCRT (though Putty can do it as well), and then telling subclipse to use my ‘svn://localhost/stonekeep’ repository.
SVN+SSH configuration under EclipseWhile doing some surfing, I found that Subclipse supports the svn+ssh syntax for specifying the repository. “Great!” says I, “I won’t need to set up the tunnel each time!”
A few more fiddles, a pleasant discovery of a configuration screen in Subclipse, and I had an SVN over SSH connection to my repository, even using my ssh key pair.
Danger, Will Robinson!
But wait! All is not well. When I tried to browse the repository from Subclipse, I quickly hit this error:

Could not open file system at /var/lib/svn/stonekeep
(13)Permission Denied: Berkley DB Error while opening environment for file
system /var/lib/svn/stonekeep/db:

This vexed me, because I had been having no problems accessing the repository locally on the server, and over my ssh tunnel. Both used the locally running ‘svnserve’ on the repository host, so why wasn’t the svn+ssh connection using it?
The answer comes in the SVN documentation, and via a little research:

What’s happening here is that the Subversion client is invoking a local ssh process, connecting to host.example.com, authenticating as the user harry, then spawning a private svnserve process on the remote machine, running as the user harry. The svnserve command is being invoked in tunnel mode (-t) and all network protocol is being “tunneledâ€? over the encrypted connection by ssh, the tunnel-agent. svnserve is aware that it’s running as the user harry, and if the client performs a commit, the authenticated username will be attributed as the author of the new revision.
When running over a tunnel, authorization is primarily controlled by operating system permissions to the repository’s database files; it’s very much the same as if Harry were accessing the repository directly via a file:/// URL.

The Problem With This
I’m really unhappy with this model. The problem is that now the user must have read/write access to the entire repository tree. When using a local socket connection (or one over ssh via a normal tunnel), the Subclipse client connects directly to the svnserve process running on the repository box, and interactions with the server happen under that processes ownership.
The svn+ssh protocol does not use the svnserver on the target machine. It tunnels the command to a user-invoked svnserve process, and that process must have read-write access to the repository.
“Well gosh, that doesn’t seem too bad. What’s the issue?”
The issue is that to make this methodology work, I have to give the user read/write access to the repository tree. Meaning, they could happily type ‘rm -rf /var/lib/svn’ and destroy the entire repository. Even worse, the configuration files (including the password / access file, which has passwords in plaintext) must be made available to the general users.
Why svn+ssh doesn’t simply make a local socket connection to the svnserve process already running, I don’t know. But I can find no way to make that happen.
The fix?
As far as I can tell, there really is no direct fix for this. There are various workarounds, which the SVN documentation discusses, including setting up an ‘svn user’ for the svn+ssh logins, and the possibility of using unix groups for permissions, but I feel that if you have a listening socket server on your repository host, you should use it, not introduce a second methodology and have to jump through hoops to implement it.
For now, I have to abandon the svn+ssh possibility, and go back to my hand-configured socket tunnels. There’s no real loss here – they work remarkably well, are very secure, and quite stable. The slight annoyance of having to open up a SecureCRT session before doing work in Eclipse is just that – a slight annoyance. I’ve dealt up until now, and I’ll just continue to deal.