Archive for the ‘Uncategorized’ Category

Bit of a rant

Wednesday, January 25th, 2012

I’m going to rant a bit about a bad support experience I’m having with VMware. This is not the first time I’ve had this same problem with VMware Support, nor do I expect it to be the last. It seems to be a characteristic of VMware’s support organization that on the rare occasions they are actually attentive, they are unable to actually offer solutions for my problems.

So what’s the problem this time? Quite simply, VMware is not reading my tickets before their support factory spits out a canned response routine. The first thing they do is ignore the contact preference field that they asked me to fill out on their web form to submit a help request. I had to submit four requests today for separate snapshot-related problems, and on three of them, the assigned support rep called back. Unfortunately, my organization hasn’t seen fit to give me a direct, unshared, fully functional incoming phone line, so I can’t really use the phone contact method. (That is a separate issue that has been a major problem for me for 3 years, but one which I’ve given up hope of getting resolved.) I specified on all four tickets that my contact method preference is email. I really wish their support organization would pay attention to the fields I fill in that they ask me to fill in on their support page.

While I’m ranting, let’s back up just a bit. When I log in to their support portal, I’m at first shown that I have no support entitlements and no open tickets. I’m given the chance to look at the knowledgebase, but that’s about it. I have to log in a second time, to the same support portal, with the same username and password, before they deign to acknowledge that I do in fact have support entitlements and open support requests. It has been that way for 6+ months, and yes I notified them of it 6+ months ago when I first noticed the issue.

Well, on to the tickets I filed today. One of them, the one where the rep actually paid attention to the contact preference field, gave me a kbase reference which, much to my surprised and delight, actually resolved the issue. A second issue has also now been resolved after the technician tried (and failed) to reach me on the phone and finally decided to actually address the issue via email, as I had originally requested. A third issue is still waiting on a response from the technician after I had to correct his re-interpretation of the error message I had given him verbatim in the initial ticket. He did ask for some additional information, but he also asked a question of me which had already been answered by the information requested in the initial web form.

Why does VMware seem to employ support representatives who not only do not speak fluent collegiate-level English, but who insist in ignoring the support requests I file in order to find the closest easily solvable problem to my actual problem? I’m sorry, but that closest problem isn’t the same, and it’s solution does absolutely nothing to help with the issue I asked your organization for help with initially.

Before anyone goes and excoriates me for not understanding technical support, let me state that I was a technical support representative for Red Hat for two years. Based on that experience, I am recommending to VMware that they move even their basic support representatives back into the United States and/or initiate a global rolling-center model. While I was at Red Hat, we found that the outsourced model did not work – as it manifestly does not – and established (at the time) three major geographic centers, staffed by individuals who spoke the languages of the countries in their geographical regions fluently. I have no problem with VMware establishing a large presence in India or other overseas locations. I have a very large problem with VMware not providing me with competent fluent English-speaking support representatives who actually pay attention to the fields in the tickets that get filled in by the selections I make in their web form.

Sometimes…

Wednesday, October 5th, 2011

… things wouldn’t go right if you paid them.

Off Topic: Brewing

Thursday, April 7th, 2011

So I’ve been doing some thinking recently about a career switch – I’ve always thought about it in an eventual sense, this time I seem to be taking myself a bit more seriously.  It all started with my homebrewing kit, and the reviews of my beer I’ve gotten.  I’ve been tossing around ideas in my head for opening up a brewpub, or maybe a packaging brewery though I’m leaning toward the former.  I’m nowhere near any point where I need to look for capital, or even look for sites, but the more I think about it the more I think I could make it happen.

So at the risk of letting the cat out of the bag too soon, here are the ideas I’ve had so far – with suitable thanks to all the people I’ve bounced the off of for refinement and (when necessary) scrapping.

Idea 1: themed beers.  It started with a book I read…  then I divided the beer world arbitrarily into four categories – ale, lager, barleywine, and mead.  These categories correspond with my division of the ancient mythological world into four “western” pantheons – Greek, Egyptian, Roman, and Norse, respectively.  Each variety of ale would be named after a Greek mythological figure, lagers would be Egyptians, and so on.  The name of the beer type?  Mythobeer.  Or maybe Mythbeer.  Mithbeer?  All those spellings look a bit…  wonky.  That’s one area I’m still actively thinking about – well moreso than other “settled” areas, that is.

But a brewpub doesn’t just make beer, it also makes food.  And serves food.  So we start with the basics – lunch and dinner.  That’s much is a definite, this next bit is still under evaluation.  I could split the building into a “brewpub” and a “restaurant” area – much like Tyler’s Taproom (in Durham, NC) is split into a pub and a speakeasy.  The brewpub would have simple fare – burgers, dogs, sandwiches, along the same lines of Tyler’s or Ham’s (before it went out of business) or Carolina Brewery (yes, I’m using examples local to the RTP area of North Carolina because that’s the area I know).  The restaurant side would have a more upscale selection of fare, similar to Top of the Hill in Chapel Hill, maybe even something closer to a Ruth’s Chris or a Sullivan’s, but not a steakhouse.  Then I was told I should consider (very seriously) doing breakfast, as that is the cheapest meal to serve on a per-plate basis; so combine that with another idea of doing a coffee house, I turn the brewpub into a coffee house and the restaurant into a breakfast restaurant before 10:30 am – blend from breakfast to lunch between 10 and 11, and depending on interest level perhaps have “breakfast” available until 3 or 4 in the afternoon, if not all day.

The problem with all of this?  At least, the first major problem, anyway?  Capital – I don’t have any.  So, as I put more thought into this, and as I start planning things out, I need to also be thinking very hard about where to get capital from – traditional bank loans? SBA loans? Venture Capitalists?  All things I need to ponder…

Gratuitous insults and other tech annoyances

Friday, March 4th, 2011

On Wednesday of this week I received what was easily the most offensive email I’ve ever gotten in my career.  It was a one-sentence email written in response to my creation of a new virtual machine which was a direct result of a programmer’s request for said virtual machine.  It said,leaving out the salutation and signature areas:

Please get <redacted>’s permission before creating new VMs, volumes and services.

What that means is that I’m no longer allowed to do my job.  Or at least significant portions thereof.  I’ve been reduced to the equivalent of a level 1 helpdesk weenie.  I am being micromanaged.

Today, it got worse.  Yes, believe it or not, there was a way in which it got worse.  The gentleman that sent that message now claims he is merely asking me to follow pre-established policy regarding system maintenance, a policy which I have been following, but which (the last time we discussed it) specifically did not cover routine things like this.  Why?  Because this isn’t really a system maintenance – at least the simple addition of a Windows XP virtual machine isn’t – it’s sort of like adding a PDF file to a wiki page.  Something that’s done all the time as a routine, regular, understood part of the job.

And yet today, the person I’m supposed to get permission from couldn’t even explain, at a third-grade level, how a hardware-based firewall is supposed to work.  At all.  And this is the joker I’m required to get permission from in order to do my job?

I need a new job.

Bang head here

Sunday, February 20th, 2011

So I’ve gotten pretty good with basic iPhone programming.  Or at least, good enough to pass as semi-qualified.  I’ve managed to get an app in the App Store and it’s selling about a copy a day so far – not a huge amount of income, but probably a lunch or two a month.  I’m fairly happy with that, since this is the first app I’ve done specifically for myself, from my own idea.  I’m working on another one now that I’m hoping will have a slightly broader appeal, but I’m still not expecting it to go gangbusters.  I am, however, earning a few more things about programming that I didn’t necessarily expect to – and thanks to Admiral Frijole (yes, that is a nickname), learning a lot more than I expected to about interface design.  See, he’s able to think like Apple (though he’ll tell you it’s thinking like a user of the iPhone, not like Apple), and has pointed me in a few different directions to make the interface not just better, but completely different from anything I would have thought of on my own.

The hardest part now is figuring out how to go from sketches / mockups to the code – I’ve got a few ideas, I just need to see which one(s) work.

In the meantime, I promised a practical demonstration of doing things in code as opposed to in Interface Builder (IB), so let’s look at how I built the initial tab environment for the app that’s selling now.  First, I start with the fact that I need a TabBarController in order to make the tabs at the bottom easily, so I make the header file for the AppDelegate look like this:

#import <UIKit/UIKit.h>

@interface Brewinator_Pint101AppDelegate : NSObject  {
     UIWindow *window;
     UITabBarController *tabBarController;
}

@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet UITabBarController *tabBarController;

@end

Now that we have the basic TabBarController defined, we simply need to built it out. I’ll be straightforward and tell you now that I’ve left some of the actual code out of this sample code that have no bearing on the interface, so the code you see will get you a pretty interface but not much else. In the applicationDidFinishLaunchingWithOptions() function in the AppDelegate.m file, I added the following code:

    UINavigationController *localNavController;

    tabBarController = [[UITabBarController alloc] init];
    NSMutableArray *localControllers = [[NSMutableArray alloc] initWithCapacity:2];

    TypeViewController *typeViewController;
    typeViewController = [[TypeViewController alloc] initWithTabBar];
    localNavController = [[UINavigationController alloc] initWithRootViewController:typeViewController];
    [localControllers addObject:localNavController];
    [localNavController release];
    [typeViewController release];

    NameViewController *nameViewController;
    nameViewController = [[NameViewController alloc] initWithTabBar];
    localNavController = [[UINavigationController alloc] initWithRootViewController:nameViewController];
    [localControllers addObject:localNavController];
    [localNavController release];
    [nameViewController release];

    tabBarController.viewControllers = localControllers;

    [localControllers release];
    // Add the tab bar controller's view to the window and display.
    [self.window addSubview:tabBarController.view];
    [self.window makeKeyAndVisible];

A few things to point out here. The TypeViewController and NameViewController classes are defined elsewhere; the header files for those classes need to be #imported in the AppDelegate’s .h or .m file appropriately. The initWithTabBar() routine called on each of them also needs to be defined and implemented properly inside each ViewController’s .h and .m file respectively.  If you want more than two tabs, you will need to initialize the localControllers array with the appropriate capacity and then repeat each ViewController “stanza” once per desired tab.

Once those are taken care of, you should be able to build and run the code in the simulator, and it will give you an interface with two tabs at the bottom that you can switch between.  Until you define the interface in each ViewController’s loadView() function, they won’t really look like much, but that’s a post for another day.

For now, enjoy your tabbing display!

Learning the iPhone way

Tuesday, February 8th, 2011

So in my update of a few days ago, I promised some information about iPhone programming.  Some of this will apply to everyone, some of it will only apply to certain people, and some of it may very well be unique to me.  So, without further ado, let’s open the ball on this series of “mini-lessons” – I can’t quite call them tutorials, but they’re awfully close and may serve as tutorials for some.

This first post won’t really cover any programming, it will cover more of the mindset I found I had to be in to be successful at programming for the iPhone.  The biggest thing I had to learn was how to forget.

That’s right – I had to learn how to forget.

Seems a bit of a paradox, huh?  Well, let me explain.  As a systems administrator, a role I’ve had across 6 jobs and over 13 years, I have to know a moderate amount about a whole lot of things.  I have to know shell scripting, Python scripting, Perl, a bit of C, some C++, a dash of Java (the programming language, not the caffeinated beverage), and a few other things I’ve thankfully managed to forget.  The hardest part of all that is sorting out what environment / language you’re in and using only that language for whatever task you’re undertaking.  When I’m working on a Python script to make my life easier, for example, it’s far more difficult to switch to helping a programmer with a Perl question than it is to start helping a coworker who’s mouse has just started acting wonky.

When I first looked at iPhone programming, I thought to myself, “Oh, Objective C – I can handle that, I know C, it shouldn’t be too hard to translate.”  Just because it has the same last letter, C, doesn’t mean they are at all similar.  The syntax is, at a very high level, somewhat akin to C or C++, but getting anywhere close to the code you find there are more similarities between C and Java than C and Objective C – and it’s even more different from C++ than from C.

Enough with the alphabet soup, you’re saying?  Okay, enough with that.  Put in to plain English, the experience was for me a lot like assuming I could speak French with a reasonable degree of accuracy although perhaps not a collegiate conversational level just because I already knew Spanish.  I really don’t know Spanish, actually – I barely passed Spanish 4 in college, and that only by the kindness of Fate and my instructor taking pity on my poor non-existent language skills.  But I digress. The point here is that I had to get to the point where I realized all of my assumptions about the language, and my expertise therein, were wrong.  That took quite a bit of banging my head against virtual walls, let me tell you.

See, I actually have another app I’ve written, as a contractor, called Successful Roads.  It’s a commercial app designed for assisting construction contractors with raw material amounts needed for road construction projects.  If you’re curious, you can look up the website at http://www.roadformulas.com/. That app was, once I go my head wrapped around Interface Builder (IB), fairly simple to build.

That relative simplicity is what led to my later downfall.  I was thinking I could handle myself since I knew a similar-sounding language, and I’d already done one app.  Boy was I wrong. The first thing I had to realize was that IB was actually hindering my understanding of what was going on underneath the covers. I was hiding code implementation details from myself – hiding details from consumers is okay, hiding them from yourself, not so much. Then I had to realize that in Objective C, things are truly objects, not just fancy bits dressed up as objects. The convention for making “function calls” was sufficiently different that it took me almost two full weeks just to fully absorb it.

After the fact, it seems so incredibly intuitive that things work the way they do, but while I was slogging through, it wasn’t at all.  The biggest lesson I can give you from this experience is a simple one – forget everything you think you ever knew about programming and get a good intro book to iPhone development.  There are several out there; I’ve picked up three or four of them over time.  I’m not going to mention them specifically as I don’t want to be seen as endorsing any one over another, but if you’re curious and wish to contact me privately please feel free to do so.  Once you’ve managed to “forget” everything you ever knew about other languages, any programming experience you’ve had previously should stand you in good stead as you learn what I’ll call “the iPhone way” and begin your journey as an iPhone developer.

Back in the game

Thursday, February 3rd, 2011

The programming game, that is.  I just finished my first “real” iPhone / iPod app and submitted it to the App Store for review.  Yes, I am an iPhone programmer now.  Well, for certain values of “programmer” anyway – this first app is fairly lightweight.  As soon as it gets approved, I’ll link to it in another post, along with the web site, twitter feed, and perhaps a Facebook page.  I’m also going to post some tidbits about what I learned in building this app for anyone interested in iPhone programming.

Hey boss…

Wednesday, October 20th, 2010

Why is it you can splurge on a hotel room for $260/night for a conference, yet you can’t replace the 9-year-old desktop-class machine that I do all my development on?  You know, the development of things like the password change page that the entire department and all external users rely on?  The evaluation of new paradigms like a new LDAP structure?  Like LDAP failover / mirroring?  You know – the important stuff that keeps the whole infrastructure running.

Cripes, I didn’t even spend that much on a hotel when I was a consultant traveling to New York City and staying in Manhattan!

Oh hello stupid…

Friday, October 15th, 2010

You know, when you’re supposedly a senior systems administrator with 15 plus years of experience, you really ought to be able to use Google effectively.  When you come to me with a problem you’ve been working on for several hours, and I figure out it isn’t really a problem but rather expected (and correct) behavior in under 20 seconds with a very simple Google search pattern, you tend to undermine my faith in your ability to do anything else with any competence at all.

The Nightmare Continues

Tuesday, October 12th, 2010

For those of you who haven’t read the previous “nightmare” entry at http://sysadmin.ncphotography.com/2010/09/07/a-nightmare-before-friday/, this is a continuation of that saga.  You may be aware that a prestigious cancer researcher was recently demoted and had her salary cut by almost 50% (http://www.databreaches.net/?p=14479, http://www.databreaches.net/?p=14547) for being negligent in securing her project’s data.  This situation is arguably worse – the idiot programmer in question actively handed out the hostname, username, and password to the entire world.  His argument will be that he locked down the database to UNC-only connections, but let’s be honest here – it’s trivially easy to walk into one of the UNC libraries, find an open port, jack in, and sniff for an available IP address.  Heck, all you really need to do is find a weak machine somewhere and exploit it, then you’ve got immediate access to this database through a bounce-box.  You could even just spoof the IP you’re coming from – it really is just that easy!

Well, in light of the mammography study issues, I reiterated my concern to my boss.  The response I got back was that he has raised the issue with the programmer, and been told that it’s not an issue.  And nobody’s concerned!  Not a one of them are worried at all about having hostnames, usernames, database names, and passwords out on the Internet available anonymously from SourceForge to the entire world!  I’ve raised this issue with the departmental security person (he’s at the “dean” level of things, so fairly high up) and with my boss, and nobody wants to do anything about it.  Even after the mammography thing, they don’t get it…

I am out of options.  I can do nothing further to warn them of this disaster waiting to happen.  I feel like I’m standing alone on the borders of the Roman Empire, shortsword in hand, watching the Goths mass just beyond bowshot, listening to the banquet the rest of the legion is partaking of and telling me to stop worrying, that no group of natives could possibly breach the fort’s defensive walls.  Hearing the manongels being built, but not able to see them, not able to make anyone believe.

Why are so many people in the computer industry (be it corporate or academic) so blindly incompetent?