Archive for July, 2009

Oracle, why dost thou sucketh so prodigiously?

Tuesday, July 21st, 2009

We’ve picked up a few larger contracts recently. In such cases the customer has been around for a while, which means they have a legacy app that needs to be supported. This is something we can handle – we specialise in tailored solutions that help leverage your existing assets while synergising with your expanding customer base, to enhance ROI and… oh where was I?

Yeah, so we’ve got customers that want Oracle installed. As I expect you know, Oracle has a long history of being enterprisey, seeing a lot of use on Big Iron hardware. It’s usable on cheap x86 hardware now, and there’s even a free edition if you want to play with it yourself (named Express Edition, much like MS SQL Server). The merits of having a toy-sized version of “enterprise” grade software seem questionable to me, but whatever.

So while we’re talking about “enterprise grade” software (to go with your enterprise support), I’d like to share some snippets of our experiences of making this enterprise-grade software work sanely. To be clear, this isn’t something we do a lot of. We have our own ways of doing things on our own systems, and more often than not, the server isn’t single-purpose (it just doesn’t make sense). That said, we have reasonable expectations of our software and how it should behave. Let’s call this “integration”, and it’s clear that they haven’t done much work on this for Linux.

Let’s start with the installer. For the Enterprise Edition, it’s a 765MiB CPIO archive. What the hell is this, seriously. It feels like a gigantic initrd. That’s the installer for version 10.2.0.1; then there’s the update patch to 10.2.0.4. At least that’s a zip file, but it’s 1.2GiB!

One of my colleagues handled the installation for that, it took him a couple of days of banging his head against the wall trying to make it Just Work. The installer is some GUI-based piece of horribleness that required installing a slew of X-related packages so the pretty installer could run. Maybe it’s an enterprise thing, but we don’t sit at a little monitor attached directly to the server, so some trickery had to be used to funnel everything to a VNC session. I guess Oracle expects you to install a full desktop environment on your big iron server as well. Once working, much time was spent dismissing popups letting us know that something wasn’t quite as expected.

Meanwhile, I’ve been working on the initscript. We need this to work properly as we intend to use it with Heartbeat, a failover management tool for Linux. To my joy, I discovered that they eschew all conventions and always return a zero error code, ie. nothing ever goes wrong. Better yet, they discard all output from the subcommands and hide the fact that there’s ever any problems. Whoever was writing this, I suspect the conversation went like this:

Okay, here’s what we’re gonna do. First, setup a LOG variable, so we can use it later:

LOG=”$ORACLE_HOME_LISTNER/listener.log”

Note that I haven’t actually defined ORACLE_HOME_LISTNER anwhere, nor have we sourced any other config files yet. Also, I made a typo in the name.

Now get this, this is the best part: we then proceed to NOT USE THE DAMNED LOG VARIABLE ANYWHERE!

Oracle has a pretty high opinion of itself, too, creating a file called /etc/oratab – yep, it’s right up there on the scale of importance, in the echelons of filesystems, raid volumes and the init process.

I think the best part of all this is the command shell. MySQL users will be familiar with the mysql command, and Postgres has psql. Oracle has sql*plus (yes, it has an asterisk in the name). From what I’ve read this isn’t the preferred way to get things done (you have a shiny GUI for that instead), but dammit, a command line is not a bad way to get things done sometimes. Or even a lot of the time. In any case, and whatever their excuses, sql*plus is absolute crap for what’s meant to be enterprise-grade software.

I understand that Oracle isn’t really “native” to linux-y systems, but would it have killed them to add readline support to the damn thing? This means you have no tab-completion, no ability to recall previous commands, and the only way to edit the current command is with the backspace key. The accepted standard way to get these features is to use rlwrap.

At least once it’s up and running we hopefully won’t have to touch it. The improved initscript is actually useful now, giving meaningful return codes and feedback on what it’s done. Huzzah!

goto considered harmful – oh, wait, it’s just PHP

Tuesday, July 21st, 2009

Hot on the heels of PHP 5.3’s snazzy new namespaces, here comes goto. I kid you not, see for yourself:

http://au2.php.net/goto

Even Java, which we have little fondness for here, does not give you goto. This has to be one of the worst misfeatures yet in 5.3 (as opposed to the native MySQL driver, which only causes customers to ask for stupid things, like installing pre-alpha code on their production webserver).

In case it weren’t clear enough, they go so far as to use an XKCD strip that highlights how bad an idea this is. I suspect this is some kind of sick joke…

The Value of Commercial Marketing Spiels

Tuesday, July 21st, 2009

Following on from our previous musings on commercial support, I thought it’d be worthwhile sharing a missive from our much-loved (*snicker*) OS vendor.

I’m thinking they could really stand to invest in a spell-checker, it’s not like there’s no free and open-source options. For your reading pleasure, the following is copy-pasta’d without correction…

Are you currently running a proprietary Java EE technology?

Take the JBoss 30 Day Challenge!

Now more than ever, wasting money on expensive, proprietaru application infrastructure is just not an option. Red hat can help to take the rish out of moving to JBoss, a lower cost, enterprise class, open
source solution for application development, deployment and management.

Through the 30 Day Challenge, Red HAt will assist your organisation in migrating one of your existing Java applications from an expensive, overly complex, proprietary application server to the JBoss Enterprise
Application platform. We will also prparte you to manage that application forward – all in just 30 Days!

To learn more, click here:

http://www.apac.redhat.com/promo/30days/

Just shy of 120 words and I count five errors, two of them in printing their own name. And that’s before you start considering the general quality of the writing…

warning: Clock skew detected. Your sanity may be incomplete.

Thursday, July 9th, 2009

I’m a sysadmin, so staying up late most nights is kind of a personality trait. As a consequence, I sometimes don’t know what day it is, but I’ve usually got a handle on the month and year. Here at the Hosting company for Creative Anachronisms we like to think we can deal with just about any such oddball request customers throw at us, but we have limits (asymptotic at times).

  • One customer, when answering our technical spec form for a new dedicated server, requested that we install a telnet daemon (locking it down of course, for security y’know)
  • Another recent request asked for IP-based vhosting – customer is presumably migrating their app from an old Netscape iPlanet webserver or something equally horrid, they wouldn’t say
  • A contract we’ve been chasing recently saw their tech guy raise the concern that Ping Of Death might cause problems if we allow ICMP through the firewall… we’re going to try to sell them our ping of death protection service, maybe see if they’re interested in teardrop as well

My mind, consider it blown

Thursday, July 9th, 2009

http://blog.bitquabit.com/2009/06/12/zombie-operating-systems-and-aspnet-mvc/

Good lord, people put up with this crap?

If you’re lazy and hate reading, you can go jump have this takeaway snippet:

And that is why, in 2009, when developing in Microsoft .NET 3.5 for ASP.NET MVC 1.0 on a Windows 7 system, you cannot include:

  • /com\d(\..*)?
  • /lpt\d(\..*)?
  • /con(\..*)?
  • /aux(\..*)?
  • /prn(\..*)?
  • /nul(\..*)?

in any of your routes

On the upside, I guess this means you can get the Windows equivalent of running a bare cat on linux with TYPE CON

Server naming schemes, part 5748

Friday, July 3rd, 2009

Unusual, odd and downright disturbing naming schemes for servers have been almost literally done to death already. We at Anchor use a nautical theme, which has proven plentiful and seemingly inexhaustible over the few hundred servers and VPSs that we have under our control. Every now and then though, you come across something altogether new and astounding.

Consider the documentation here which is linked to from this site.

If you read through the PDF you’ll find the gem ZEUSDOGGYDOG. We are clearly dealing with a genius who has combined two distinct themes – Greek mythology (specifically, gods) and modern-era rappers. The namespace is almost inexhaustible (especially considering the current state of popular music)!

I’ve come up with just a few examples:

MARSNOTORIOUSBIG
HADESFLAVAFLAV
JUPITERDRDRE
POSEIDONMETHODMAN
HERMESICET

I’m sure an automated generator based on wordlists would be trivial to implement, and supply you with a bounty of educational yet modern server names.

Site links
Anchor
Wiki
Blog
Services
Domain names
Web hosting
VPS
Dedicated Servers
Co-location
Articles
Dedicated Server Purchasing Guide
Dedicated Server Tutorials
Developer Friendly Hosting
Useful Tools