• The Ubuntu Tomcat Disaster

    I’m generally not a big Ubuntu user on the desktop and am rather fond of my usual choice of Gentoo that I’ve grown quite accustomed to setting up.  Desktops get plain old Gentoo and the laptops get Sabayon (so I don’t spend all of my time configuring wireless).  On the other hand, I’ve gained quite a bit of respect for Ubuntu Server over the past year or so.

    In the usual Ubuntu fashion, its extremely quick and very easy to get a LAMP server up and running.  This is a nice plus for me when I seem to have a habit of installing and trashing virtual machines on a near weekly basis.  I’d gotten to like it so much that I even started setting it up on dedicated hardware, that’s right: machines of importance.  Dodging the occasional quirk here or there (in one release I had to change my version of Vi to get syntax highlighting working and properly configurable), its worked admirably.

    I even had a good experience come from a bad one which was an Apache update that caused a server to stop serving PHP files.  Of course, this happened over a weekend so by the time I got to access the box on Monday I was furious and hesitant to touch Ubuntu anymore.  After realizing that the only install disk I had around was an Ubuntu Server CD. I convinced myself that the problem was caused by Synaptic and went on my way.  Once again the install blew me away in its speed and I was back up in a few hours.

    Recently though, I’ve encountered an oddity that is simply too much to bear.  I’ve had Hudson set up and running on an old Debian install for a long time.  I like it for its simplicity, price, and awesome mascot-man.  Oh yeah, and it works quite well!  Distribution as a WAR file makes deployment easy.  I just set up a home directory for Hudson, drop it into an application server, and build away.

    When it came time to set up continuous integration for Betaville’s server software, I apt-getted in the usual Ubuntu fashion and grabbed Tomcat 6.  The install went and port 8080 brought me to Tomcat’s “It Works!” page it which point I praised the Canonical gods just a little more.  As soon as wget had completed downloading the Hudson WAR, I dropped it in and waited for Tomcat to do its thing.

    And I kept waiting.  I now started wondering what was going on.  I remembered having seen two Tomcat directories, /usr/share/tomcat6 and /var/lib/tomcat6, each with their own webapps folder.  The version in /var seemed like the logical place to put one’s webapps, but I changed it just in case.  No joy in the /usr directory either.  Now I’m flustered.

    As the number of tabs in firefox grew I began to sense desperation setting in.  More and more tabs were showing up where I’d find a Google result or two which would promptly be closed.  As the minutes ticked on I was reduced to a bunch of useless tabs of Google results that had gotten me nowhere.

    I eventually got myself to Hudson’s dashboard.  In Ubuntu’s wonky wisdom, their Tomcat package has the security manager set to ON by default.  Is it smart thinking?  Probably.  I just find it strange that Tomcat is totally locked down in an operating system that leaves iptables completely open immediately post installation.  Now, back to the task at hand.

    So I sort of made it to the Hudson dashboard, in that I now had some errors having to do with Hudson not being able to create some folder.  The good folks at that project handily provide a link right in the error page to their wiki which details how to sort it all out.

    This is the page that I was brought to.

    Now, it says I need to set CATALINA_OPTS, or failing that, create an environmental variable called HUDSON_HOME.  After I do one or the other, I’m to run “catalina.sh start”.  Now the fun starts again as I come across this beauty of an error:

    /usr/share/tomcat6/bin/catalina.sh: 357: cannot create /usr/share/tomcat6/logs/catalina.out

    Cool!  A permissions error!  I know how to fix those!  Long story short, I tried a seemingly endless number of permissions and users to no avail.  Heck, I tried things that no one should allow a machine talking to the internet to do and still came up empty.

    After devoting an embarrassing amount of time to this, I tried to jump ship to Jetty.  Of course, I already had Tomcat installed so getting Jetty to serve on 8080 took a moment, and eventually never happened (this is once again an installation done from an Ubuntu package).  I was now installing OpenSUSE in a virtual machine on my desktop thinking I’d just get Hudson working and build and SCP the application JAR’s up to the server when it detected a change in the SVN repository.

    Before I could finish, however, I came across an interesting tidbit on my last remaining friend, the Hudson wiki.  It seems that Hudson comes with an application server, one that I’d never heard of, already bundled.  In under fifteen seconds I had Hudson running on the Winstone (incidentally, there is a pretty funny, if raunchy story behind the name) container with a single command:

    java -jar hudson.war

    After recognizing my mistake, I quickly recanted and added nohup to the command, allowing me to keep the application running after I’d closed my shell.  With this, I’d put to rest hours of frustration with literally a single command.  It doesn’t get much sweeter than that.  Hudson and Winstone have been running like clockwork for the better part of 48 hours now.  Now I can finally get back to the projects that were waiting on it!

    Needless to say, I think my days of using Ubuntu Server are numbered.  Too much about how it handles itself just isn’t normal.  Because of this, I’m forced to restrict most of my troubleshooting to looking around Ubuntu-centric hangouts.  I was fairly impressed with OpenSUSE’s installation process the last time I went through it, perhaps its time to put Novell to test one more time?

  • Troubleshooting Perl Module Installation

    I’ll be the first to admit it, I’m not a huge Perl user.  In fact, I wouldn’t even call myself a minor Perl user.  Luckily there are others out there that do great things with it, like the Bugzilla people.

    Having used it for some time, I’ve come to really appreciate all the functionality that it brings and have enjoyed the positive impact it’s had on my ability to concentrate on single problems without creating wider ones.  Unfortunately, no one said it was an easy installation.

    Having been through my own pains with Bugzilla installations before, especially with regards to sending secure email, no one was more upset than I when I needed to re-install the operating system for a server hosting our Bugzilla.

    I flashed back to annoyed thoughts of struggling with Perl modules and CPAN before I could even bother with configuration files for the other email issue.  I embarked and restored everything and tried the best I could to get all the required modules installed.  Some wouldn’t budge, however.  I kept getting errors about the lack of YAML and Make returning a bad status:

    Make had returned bad status, install seems impossible

    Installing YAML, of course, didn’t succeed so I tried my fallback fix-all of re-installing my build tools.  Luckily, this is easily accomplished on Ubuntu with:

    sudo apt-get install build-essential

    To my chagrin, I hadn’t ever installed build tools.  Of course, things now went swimmingly with important thinks like Make actually being installed.  I think this points out something interesting though, in the way we (I’m sure I’m not the first to do this) see development machines vs. production servers.  I, for example, wasn’t at all concerned with having GCC on a webserver so it never got installed.  Similarly, I found it astonishing to be reminded that a server distribution did not include such tools as well.

    What’s the moral?  Well it’s nothing clever, just always remember to install your usual tools, even if you don’t think you’ll need them.  See?  Isn’t it easy to feel smart when you catch such a silly mistake?

  • Working Faster in Eclipse

    When I started out in Java, I spent a few weeks using Netbeans quite satisfied.  It wasn’t a life changing experience, but it worked like an IDE should and I happily punched away.  After being challenged by a friend to give Eclipse a shot, I did and after a few weeks couldn’t turn back.  Something about the package was just “right” out of the box.  It felt smarter and like it was willing to work in the same vein that I work.  Opening a bracket and hitting enter brought me to an appropriate indentation on the new line.  I, of course, didn’t realize these things until needing to open Visual Studio one day and seeing how primitive working in it really was.

    With that out of the way, I’ve been happily working with Eclipse on all platforms and not needing much in the way of plugins besides Subversive for Subversion and the occasional specialty tool here or there (Android tools come to mind).  So there, everyone is caught up with my fondness of Eclipse, people that see me working on a daily basis might call it more of a fetish but I won’t go that deep into it..

    I do have another love affair with a certain text editor though, and it goes by the name of Vi.  Like my Netbeans to Eclipse transition, I used to use emacs without thinking much about it.  I knew a few of the commands and could get around reasonably well but was never really in love with it (this might have been different had I taken the time to really learn how to use it like a pro).  One day I was harassed about using emacs by a friend/Vi user.  Not feeling any particular allegiance, I tried it out to shut him up.  Just like emacs it was nothing special, but I watched my friend work with such speed that I couldn’t help but want to be like that.  I kept using it and reading up on the commands and using the cheat sheets, but soon enough I was getting the hang of it and really enjoying it.  What really got me was the sheer ease of moving things around, once the commands became muscle memory I was working faster than I ever had in any modern text editor.

    Get here by navigating to General-> Keys in the Eclipse preferences window

    Get here by navigating to General-> Keys in the Eclipse preferences window

    I went along using both applications very happy with each of their strengths but never quite making the connection of putting the capabilities together.  That is, until I hit “dd” (Vi’s delete line command) in Eclipse without thinking and was disappointed to see “dd” typed rather than watching my current line disappear.  Realizing my mistake I quickly looked up how to delete a line in Eclipse. Sure enough, Ctrl-D came up and I happily went along.

    Suddenly I felt that much faster and started feeling my excitement about using Vi coming back.  I had now taken my favorite piece of software and started working a bit like my other favorite piece of software.  A day or so later, I wanted to cut a line.  Once again I was impressed by Eclipse and found an unbound “Cut Line” command which I quickly bound to Ctrl-Alt-X.

    What’s the lesson here?  Well, besides my underlying love for Eclipse it should really be to spend more time looking for a better way to work.  I’ve learned over the last few months what people have been preaching for years, that using the tools you have at hand to their maximum can pay off dividends.  I have little doubt that I could set up Netbeans to function in a similar manner to my Eclipse installations, ditto for using emacs or Vi.  I’m just glad that I’ve dug deep enough to find what I was looking for rather than simply throwing up my arms with a “bah, it’ll never do what insert application name does”.  I feel empowered, maybe some day I’ll tackle my behemoth of an inbox.. but I won’t get ahead of myself, I’m glad for just improving one aspect of my workflow for now.  Try it for yourself, it’s a great feeling.

  • Access Network Shares From Avid Media Composer

    I suppose this is as much a personal reference as it is a public broadcast of knowledge, but here are the [few] steps to setting up Media Composer to read from network shares.

    Disclaimer: I haven’t gotten a chance to test this on OS X yet, I will update when I do.

    1. Start by mapping your network share to a drive letter in Windows.  XP, Vista, and 7 all have different places of varying visibility for this button, but it can consistently be found by right-clicking My Computer.
    2. In the window that pops up:
      • Select the drive letter that you wish to assign.  Windows should only display unused letters, but I’ve seen instances where it hasn’t.  Also be sure not to assign letters you are familiar with for removable storage (my Compact Flash reader, for example, always comes up as F:)
      • In the “Folder:” field, supply the name of location of the share.  It should look like “\RemoteComputer*SharedFolderOnComputer*“.
      • Depending on the nature of the remote operating system and the environment it is in, you may need to supply credentials other than those used to log in to your computer.  We’re set up with Active Directory here, so I use my network username/password.
    3. Start Media Composer
    4. Open the console (Tools->Console or Ctrl+F6) and type in “alldrives” (no quotes) and hit enter.  The console should respond that all drives are now active whereas only “true” drives were available.  Note that the alldrives command works as an on/off switch.  Entering the command again will disable the use of network drives

    You should now have the option to capture to the mapped network drive of your choosing.  Be aware though, depending on your network setup, working from shares can be slow.  Performance seems quite usable for now though and scrubbing is instantaneous, though playing from a new location on the timeline does take a second or two to get on track.  We’ve ordered a dedicated Intel NIC for the Avid rig in the hopes of seeing a bit of an improvement.  That being said, however, its still quite usable.

  • Finals Week… Before Finals Week?

    College.  It’s interesting for a myriad of reasons, but I seem to always be finding new ones.  As the sole person in my ring of friends to not be living at school, I lose out on the ability to party and forget about responsibilities for nights at a time, so I generally see a semester as four months of stress rather than just the last two weeks.  That said though, I’ve seen something quirky popping up and it doesn’t seem to be limited to just NYU-Poly.

    The tradition seems to have long been that you can party your life away and suddenly wake up for the finals and things will magically work out.  I, and likely millions of other students, must be living on the moon then.  The reality, as it turns out, is that finals are being brought further into the semester every year it seems.  Out of my 6 classes this semester, one has an assignment due during the normal finals week and the other has a test on its scheduled day.  Other than those exceptions, the rule seems to be that come December 9th (the last day of classes), the semester is over.

    On the outside this seems good, vacation starts earlier and stress is done earlier.. what’s not to love?  The problem, however, is that finals are now mashed into regular class time.  My rationale for typing this is that I’m currently procrastinating doing an assignment for a class where the final is due before the last homework (OK, it’s only due 24 hours before the other, but you get the point).  From a purely linear perspective, why take a final before you’ve actually learned all of the material, or in the case of homework, affirmed your knowledge of the material.  The answer is of course, that the finals are now less about content and more about the ability to write a paper or give a presentation.

    While I don’t agree with taking the focus off of content, I can’t blame anyone for being concerned with the direction in which this country’s communication skills are headed.  In the time since Al Gore invented the internet, it has slowly been perverted from a collection of knowledge to a bad billboard showing off exactly what morons are capable of when given the right tools (Evan Goer has an absolutely brilliant article on where some of this lunacy has come from).

    What we’re left with as a society is [mostly] young people capable only of expressing thoughts as either grammatically incorrect stubs or degrading personal attacks (or both).  Of course, this is a well documented phenomenon, so I won’t go into too much depth on it.  For all I care, the internet can go in whatever direction the idiot population allows it to, so long as I’m allowed a place to continue my own conversations devoid of the absurdity).

    On the other hand, what I will not accept is a higher education system that is teaching adult infants to write and communicate.  Our thirty and forty thousand dollar educations are being slowly degraded into extensions of high school rather than what we (and the world we’re supposed to inherit) deserve.

    Folks complain about Bush and Obama, but how does it feel that this will one day be able to run for president or prime minister  (Disclaimer:  I choose Fred because deep down, I actually do find him enjoyable to watch and don’t mind his antics now and then).

    What is the solution then, if the general population is sinking to such a level that Idiocracy rings truer and truer every day?  I say, let it be.  Don’t change the educational system, and don’t punish those there for a reason.  People will either wake up and join society or we will slowly turn into a coma state, but don’t hamper my capacity to learn by pushing me through middle aged writing exercises in the name of real world skills.  Grade school is for learning to be a person, university is supposed to teach you how to accomplish a task.  Get with the program or stay home.