Thursday, March 20, 2008

Do I like Citrix?

I saw a forum post the other day referring to this site (which is way fucking uber cool in itself. Major thanks for the plug!). But it troubled me that it made the assertion that I don't at all like Citrix. Certainly I can understand how one would get this impression from the posts. But it's not true.

I've been doing Citrix for a long time. I've had lunches with Mark Templeton, gone to solution summits, had lunches with the developers (great guys), attended iForum (got completely hammered), and did it all on Citrix's dime. Citrix has treated me very well, and I've made a successful career out of working with their products. Indeed, some of the quirks of their products have served to make the Citrix skill set more exclusive. Long ago Citrix made a decision to foster community around their products. Sure it's taken them a while to get it right, but it's a good thing. They're not perfect, but there are far worse software companies out there.

The point is that I'm all about giving credit where credit is due, and Citrix deserves alot of credit for a great many thing.

So what's with all the zings?

I can't begin to count the number of blogs out there that deal with thin computing. While many of these are technically interesting, they also tend to be butt-kissy and flacid in content. My goal is to keep it interesting here by speaking from the real side of IT with a healthy dose of the cynicism that proliferates most enterprise shops.

Real IT isn't sitting around sipping lattes while talking about great new feature sets in products. Real IT is plowing through all the bugs and unexpected behavior those new products add as 'features'. IT is getting called in the middle of the night because some fucktard can't log in. Our day to day is decidedly less fluffy than many vendors, Citrix included, would have us believe about their products.

So there ya go. I'm not against Citrix, Microsoft, or most other companies out there.. except Scientology of course, and then all bets are off. I'm just trying to expose the underbelly of the IT and thin computing landscape and have a little fun doing it.

Who knows, Someday some dude/dudette at Citrix may be reading this blog (they do quite frequently, btw) and maybe find something useful that they can use to improve their products. I wouldn't count on it, but it's possible. Innovation is good for everyone, even assholes like me.

-CG

Tuesday, March 18, 2008

Happy Power Holidays!!

And in outsourcing critical operations to third world countries with faltering infrastructure news:

Through one of my esteemed coworkers, I caught a copy of an email that was sent from our Chennai operations to one of our VPs. Apparently, there's a bit of a power crunch over in India.

There's so much of a crunch in fact that the government is mandating blackouts. The spin is that they're actually 'power holidays', but lets face it - how much of a break does one need from electricity? Is having electrical service something that is so stressful that we need a holiday from it? That's right pal! Fuck President's Day, but if someone doesn't kill the lights, I'm taking a hostage.

Okie dokie.

I've never worked at a company that offered paid holidays from electricity, running water, telephone service, clothing (though that could be kinda fun), or the like. No, indeed going without these things is generally regarded by most as a huge fu#king inconvenience.

So what does this mean?

Before we get into that, it's important to take a moment to give a big middle finger salute to all these companies that gleefully tossed skilled IT workers to the curb in favor of cheap overseas (and often unqualified) labor to save a buck or two on the front end. Long have I suffered at the inept hands of overseas workers which have been tasked with jobs that they are unqualified to do. So a heartfelt congratulations to all of you corner-office-power-lunching big wigs. You're getting exactly what you paid for.

And believe me, if some whelk supervisor over there is sending an email to an EVP of a multi-billion dollar company telling him that golly gee sorry, we're just not going to work on Mondays because the building is dark..this is just the tip of the iceberg.

Hell, it's not even summer yet. Just wait until they crank up all those air conditioners over there and then talk to me about power holidays.

Polish up the resume and keep a close eye on this one kids. My guess is that it may turn out to be a sizable fecal matter & fan situation before it's all done.

-CG

Thursday, March 13, 2008

Ericom to Citrix: Chew on This!

This is big news.

In a very interesting and fuckyouCitrix-esque turn of events Ericom has stepped up and is offering a free version of Windows Power Term to be released with Windows Server 2008.

Now I haven't personally used Powerterm, but I hear it's not too bad. And hell, if it's free, then it's a no-brainer. This is a real sucker punch to Citrix in the small to medium office arena. In the present economic landscape, you can bet that a free and workable alternative to Citrix will be embraced by companies. This is especially true in the medium size sector where the company or app is just too big or important to only use terminal server, but they hate seeing that damn Citrix line item every year.

Hats off to Ericom for a very bold and I must add cunning move! But now what?

The problem is that very few decision makers are tuned into the virtualization world like us. Let's face it; they have lives and have probably never been addressed by anyone as "Dungeon Master". It's up to us as engineers to sell this thing and give it visibility. Ericom is putting itself out there and if this does well, it's going to introduce competition. That's going to force innovation on Citrix's part. That is unless of course Citrix just buys Ericom, which would be in line with their recent product launches.

See original info here.

-CG

Wednesday, March 12, 2008

Managing Local Admin Passwords

The company I work for often seeks out the worst and most vexing solution to any given situation. That probably stems from the fact that although the corporate line is that we hire 'quality people', most of the people in my building have an IQ approximating that of a canteloupe.

In fact, I would wager that many of the IT staff here would be quite content to sit and drool on their keyboards for much of the day. Sad, but there ya go. The plus side of that is that it's not terribly difficult for a slightly below average bloke such as myself to look like a shining star.

"Hey CG, I really like the way you tied your shoes. You keep that up and the sky is the limit for you here."

Seriously.

So anyways, one of the most short-bus-esque practices that goes on here is that all of the servers in the environment have the same admin password. Yeah.. not only that, but nearly everyone in the building knows about since it hasn't changed in two years. It even showed up in a Google search the other day. I wish I was kidding.

So it's been a constant pain in the ass for me that when odd stuff happens on the server the trail stops at the admin account. So I decided to take the law in my own hands and change it.

Here's the quandry. I don't want to have to manage several hundred admin ids and passwords. I wanted a password that I could get to quickly, that was unique for each server, and that did not require some kind of database to manage. Here's what I came up with. I set the password to a combination of the servername, a special character, and the last octet of the server IP address. It's easy to figure out the password if you know the formula and the formula can be quickly updated by tweaking the script.

Here's the script I used to do it. (Special thanks to E, who helped me fix a bug in the error handling) This pulls a list of servers from MFCOM and loops through them. Enjoy.

'//Resets the local password using the formula:
'// servername + @ + last octet of IP
'// Run this using cscript. If you use wscript you will be innundated with popups

'-------------------------------------------------------------------------------------
'// Compensate for crappy coding and diminutive manhood.
On Error Resume Next


'//Set the Username
'------------------------------------------------------------------------------------------
LocalAdmin = "Admin"
'------------------------------------------------------------------------------------------


'// Get the farm 411
Set theFarm = CreateObject("MetaFrameCOM.MetaFrameFarm")
theFarm.Initialize 1

'// If this doesn't work we're screwed so exit
if Err.Number <> 0 Then
WScript.Echo "Can't create MetaFrameFarm object"
WScript.Echo "(" & Err.Number & ") " & Err.Description
WScript.Echo ""
WScript.Quit Err.Number
End if

'// Loop through the name o' server
For each Server in thefarm.servers

'// set the hostname based on where we are in the loop
strComputer = ""
strComputer = Server.servername

'invoke the dnslookup because the datastore IP could be for some other nic if we pulled it from MFCOM.
strIP = DNSLookup(strComputer)
strOctet = Right(strIP,3)
StrOctet = Replace(strOctet,".","")
strPassword = strComputer & "@" & strOctet
strPassword = LCase(strPassword)

'//now that we have the password, let evil ensue

On error resume next
IF not strComputer = "" then

'//Clear any error condition that may have existed from the last loop
Err.Clear

' //Connect to the computer\administrator account
Set objUser = GetObject("WinNT://" & strComputer & "/" & LocalAdmin, user)
if Err.Number <> 0 Then
wscript.echo "Error on " & strComputer
if WScript.Echo "(" & Err.Number & ") " & Err.Description
WScript.Echo ""

End If

'//Set the password for the account
wscript.echo
wscript.echo "Setting password on " & strComputer
objUser.SetPassword strPassword
objUser.SetInfo
if Err.Number <> 0 Then
wscript.echo "Error on " & strComputer & "!!!"
WScript.Echo "(" & Err.Number & ") " & Err.Description
Else
wscript.echo strComputer & " - " & localadin & " password has been set to: " & strPassword
End If
End if

' //senseless destruction of objects
Set objWMIService = nothing
Set objuser = nothing

Next


'-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
'Functions
'-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Function DNSLookup(sAlias)

If len(sAlias) = 0 Then
DNSLookup = "Failed."
End If

Const OpenAsDefault = -2
Const FailIfNotExist = 0
Const ForReading = 1

Set oShell = CreateObject("WScript.Shell")
Set oFSO = CreateObject("Scripting.FileSystemObject")
sTemp = oShell.ExpandEnvironmentStrings("%TEMP%")
sTempFile = sTemp & "\" & oFSO.GetTempName

oShell.Run "%comspec% /c nslookup " & sAlias & ">" & sTempFile, 0, True

Set fFile = oFSO.OpenTextFile(sTempFile, ForReading, FailIfNotExist, OpenAsDefault)
sResults = fFile.ReadAll
fFile.Close
oFSO.DeleteFile (sTempFile)

aIP = Split(sResults, "Address:")

If UBound(aIP) < 2 Then
DNSLookup = "Failed."
Else
aIPTemp = Split(aIP(2), Chr(13))
DNSLookup = trim(aIPTemp(0))
End If

Set oShell = Nothing
Set oFSO = Nothing
End Function

----------------------------------------------------

Happy Clicking!