Thursday, April 03, 2008

RANT: Perl

So I have this contract, right? They have a system that has two parts, a wall as it were. On one side of the wall is the company I do the work for and my stuff sits. On the other side of the wall is another company they have been working with forever who handles a different part of their business. Normally these two sides don't have to communicate much but there are some places where they do. Typically it is my side throwing information over to their side.

Ok, so what does this have to do with Perl? Because the other side of the wall insists on using Perl and only Perl. WTF! Seriously, come out of the 90's. Perl is great for patching shit together but it totally is not suitable for enterprise level applications. This is experience talking here. Years ago I worked for a company whose entire system was written in Perl. I even rewrote the entire thing in Perl. Eventually we moved to .Net because it actually works on an Enterprise level without having to fricken jury-rig everything under the sun.

Anyway, why is this bothering the heck out of me right now? Because certain people on the other side of that wall seem to be working to undermine my efforts on my side of the wall. They are contractors, as am I, so I understand the sentiment. However, it's fricken Perl! WTFBBQPWNED! Dorks. Wait, I was going to give you some specific examples.

Example 1: We have two separate databases even though a lot of data is duplicated (seriously...why do people insist on doing things the hard way...that's a different rant). They wanted to synch their database to ours on a nightly basis but since they are using MySQL (which I have no problems with and like) and we are using SQL Server we couldn't easily schedule a replication process. So I suggested that I could setup a web service to allow them to pull data from us nightly or weekly or whatever and they could do whatever they wanted with it. A web service is a STANDARD method of B2B communications that has been around for quite a while now. It is a mature method for languages that are capable of being fricken standard. Wow, the anger. So I setup this web service and, surprise of surprises, they can't consume it because Perl is shit. Eventually they figure it out and all is well. This leads directly to...

Example 2: My side of the wall is in competition with some other companies to land a contract with a well-known company to provide them with data. During the intial conversations I, once again because it fricken works, sugggest that we use a web service to transfer the data. They agree. I also suggest, because of Example 1, that before we sign any contracts or whatever that we have a communications test to make sure they can actually consume a web-service since they are using some propritary language that I am not familiar with. Again, they agree. After that meeting but before the communication test we have another meeting, this time the guy that runs the company on the other side of the wall is involved because we will need to pass information over to him. We kinda go over the plan to use a web serivce and he goes 'Well, are you sure you can make that work? I know you had trouble with that when we tried to implement it.' Can you believe that shit! Fucking Perl guru punkass. I didn't have any problems, the issues were on their side because they insist on using FUCKING PERL. To quote Team America: Jesus Christ Titty Fucking.

So we move forward, have the communications test, have some minor issues on their end that were quickly resolved...WHAM, communication works. Funny how mature standard business practices work, aren't they? Everyones happy and then I hear from the person running the show on my side of the fence that there are doubts that what we want to do isn't possible. I'm like 'What?' and she's like 'Yea, are we sure it is possible?' and I'm like 'This is rocket sceince. It is pretty straight-forward and the hard part is over (the communications test)' and she's like 'Yea, that is what I thought'. Well, guess where the doubt is coming from...you guessed it, Perl world! No shit they would think it isn't possible, it's fucking PERL!

Wow. Just wow. And let's not forget that this other group seem to have a habit of overstressing how difficult things are going to be to change. Actually, now that I think about it, I bet they aren't overstressing. It probably is just that hard because its FUCKING PERL.

Ok, Rant over.

7 comments:

Clyde said...

Dude, I actually had to write a web service and a client and was told that the client had to be in Perl. You are so right! What a cluster that was...eventually got it to work, but it took a lot of time, effort, and aggravation. Actually, I am getting a little burned just thinking about it...and I haven't even been employed for 6 months.

Ryan said...

Yea, on that project I was talking about that was written in Perl I took the conversion to .Net in steps. One of the first steps was to setup some of the server-side stuff in .Net and then make it accessible via web service. The idea was to keep the client in Perl for the time being and just change the interface. The upshot is that the client had to be written in Perl and I had to do all sorts of weird manipulations to get the stuipd thing to work. Fucking Perl.

EJ said...

First, let me put in this disclaimer, I am not a developer. However, I did some pretty hot and sexy things with perl years ago for another company that I believe are still in use..and are highly depended upon for the company and it touches every customer of theirs in a completely unseen way.
And I know people who develop things enterprise level, entirely in perl. There are things it's appropriate for, and there are things it's NOT appropriate for. Which I would guess is true for .Net as well. I am a big fan of technologies (Perl/Java, etc) that can be used cross platform, can .Net be used on anything other than Windows? (That's something I'm honestly asking)

Ryan said...

Perl can definately be used to do hot and sexy stuff, no doubt about it. It just isn't optimized for enterprise-level stuff (as in the core functions, not side stuff that it was intended for) and I will maintain that until I die or they rewrite the entire thing.

.Net is interpreted like Java and can be run anywhere someone ports the CLR machine. There are ports for Mac and Linux. So yea, it can be as platform independent as any other interpreted language.

Unknown said...

ok let me start this off with my background. I know servers, pascal, perl, php and enough visual basic to be dangerous. So here are my comments.

The problem here is not Perl. It is the people programming in that language. XML and web standards were created for this very purpose and it is the lack of knowledge and skill of the perl developer if they cannot use data transfer standards. Perl is a real good language and does many things, is cross platform and does what it is suppose to do. The same thing can be said for Java, PHP, etc. (I seriously dislike java cause of the virtual machine, otherwise its cool).

Why do I not think .Net is the answer? It pretty much requires a crappy pain in the arse server environment to run. I have managed linux server, windows servers, beos, os2 etc etc etc. The worst is Windows. Really. If .Net could run on Linux consistently and reliably I would totally move into that camp as .Net is a very fun language.

I stay with PHP solely because it can run on Windows and Linux and other server environments and does a really fine job to get the work done (if you have a knowledgeable programmer).

I think your real rant here is more of a lazy programmer than perl. Someone needs to kick that programmer in the butt and get out of that rut. Nothing gets done by being lazy.

- Joe

James said...

First off, let me say I am totally on your side here. I did Perl for a long time when I was doing NASA contract work, and it really does suck for trying to do enterprise-level stuff. It's great at simple file manipulation tasks, which is really what it was designed for, but it doesn't scale well to anything web-related, because it was NEVER MEANT TO.

However, I did notice that there is a whole book dedicated to doing web services in Perl. So, if you are stuck working with people who are using Perl either because they have to or because they are just stubborn, maybe you should suggest they go out and spend a few buck on this book so they can do what they need to do on their end:

http://www.oreilly.com/catalog/pwebserperl/

And, yeah, web services are definitely the way to go. Way better than dealing with RMI or CORBA or JNI or any of the other more limited and clunky solutions for communicating between disparate systems. Web services are the win!

Ryan said...

I knew I was going to get flack from a couple of you.

Just because you can write things in Perl doesn't mean you should. You have to use the right tool for the job and Perl just isn't the right tool for enterprise-level stuff. It can be used on the outskirts of an enterprise application, but not as the core language. Similiarly, I wouldn't use .Net or Java to do something that would be much more suited to Perl.

I have no opinion on PHP as I haven't had much experience with it.