G.H.E.Y. IN. H.D.

"God Hates Euroranger, Yes INdeed He Does"

  • July 2017
    S M T W T F S
    « Feb    
     1
    2345678
    9101112131415
    16171819202122
    23242526272829
    3031  

Archive for the ‘Web Dev’ Category

Open Letter to Mustafa Sualp and AEFIS

Posted by Euroranger on October 26, 2014


[Preface: I am sharing an event I am experiencing as an example for why we have laws and rights and why it’s important to not simply surrender them in the face of intimidation.  The following post (and I need to make this so clear even a Philadelphia lawyer won’t fail to discern it) IS MY PERSONAL OPINION AND OBSERVATIONS OF EVENTS MIXED WITH FACTUAL EVIDENCE SUPPORTING THOSE OPINIONS THAT HAVE AFFECTED ME AND MY FAMILY.]

Dear Mr. Sualp:

I am in receipt of your lawyer’s, Stephen Goldblum, emails from both 9/24 and 9/25 of this year regarding exceptions you took with portions of a post on this blog dated June 10, 2013 wherein I related my company’s experience doing business with you and your firm, AEFIS, Inc early last year (2013).  I note, with much amusement, your demand that I provide you written acknowledgement that I have removed said post by September 30, 2014 or that I will be in peril of “institution” (fancy word, that) of a suit against me.  As you may or may not have noted, the post remains unchanged.  I assure you, I did the presumably anticipated quaking in my proverbial boots at his threat of filing suit and seeking fees and expenses “pursuant to Section 9(d) of the Independent Contractor Agreement” which, incidental to Mr. Goldblum’s surely rapier-like attention to legal detail, is the section concerning Notice…as opposed to what I presume he meant to be Section 9(e), the Attorney’s Fees part of the contract.  I will thank your lawyer though for bringing up a salient point which I’ll remind you of here shortly.

Anyway, my post remains where it is.  It is my opinion and clearly does not come even remotely close to a disclosure of confidential information (do you or he even read these contracts?).  I will thank you for the momentary smile I enjoyed at the ludicrous stupidity of such a claim, though.  But hey, let’s break this letter for a moment and let everyone see what I’m talking about.

Let’s start with your opening shot. I’ve decided to informally reference this as “fuck you Exhibit 1″…because, well, fuck you.

 

I’m gonna follow up with this, our exchange, which I’m entitling “fuck you Exhibit 2”

 

And finally, my response of the next day which we can refer to going forward as “fuck you Exhibit 3”.

So, Mustafa, I did, tragically, miss that September 30 deadline.  Before you and your learned legal counsel get all lawsuit-y, I want to say this one thing: PLEASE, do me the favor of suing me for all the things your letter threatens.  I want you to man up and actually follow through on your assertions because, in front of a judge in a court of law, we both know which of us will actually bring evidence of their claims and which will not.  We both know I have a transcript of our entire Skype chat history, and amongst other damning FACTS (because, hey, to a judge this kind of shit will actually matter) the email from your “operations coordinator” explicitly acknowledging that I had indeed worked in excess of 40 hours (46 to be precise) and to not perform further work until requested (hours for which I was never paid).  Oh look, here that email is now:

We’ll go ahead and entitle this one as “oops”…because fuckyouExhibit4 would be just so cliched by now.

Anyhow, I have to make one correction to our ongoing conversation because I believe, and pretty much any and every court in this country will agree, facts and accuracy matter.  I had originally advised your counsel that my claim for unpaid wages (the 4/24/13 email I and he refer to in “fuck you Exhibit 2”) was $2675.  I regret to admit that amount is in error and we both have your esteemed Counselor Goldblum and his manifest inability to correctly identify pertinent sections of a binding contract to thank for prompting me to greater accuracy.  I was so moved by his adroitly applied legal blustering that I went and checked Section 9(d) of our contract.  Guess what I found?  Oh, fuck you, let’s not guess:

Since we already called one “oops” I guess we’ll go ahead and call this one “massive fucking fuck up Exhibit 1”.

Would you believe it?  You and AEFIS never did “deliver by hand or mailed by certified or registered mail” your notice of terminating our contract?  Did you send an email to that effect?  NO!  You didn’t!  But your fucking “attention to detail” lawyer did!

Kind of running out of clever titles to apply this. Let’s just note how it’s explicit in that it’s being delivered “VIA EMAIL” which is pretty much not keeping to the contract…which, in itself, is at least consistent.

Guess what that means, Mustafa: the contract is, legally, still in force.  So, with that in mind, remember the part where I admitted that the amount of my claim for unpaid wages is incorrect (I hope so because it was just up the page here).  Well, if you remember that then I’m sure you’ll remember our negotiations wherein I accepted your lower than normal rate of pay for a guarantee of a minimum of billable hours per week (to make working for you actually worthwhile because I was assuming you’d be a man of your word and honor your contractual agreements) which was enshrined in the addendum to the contract (which Mr. Goldblum helpfully supplied me in this recent resumption of our communications):

How many “oopsies” do you and AEFIS commit annually? Hope it’s not this many.

Oh hell.  Does that say a minimum of 20 hours per week at the stupidly low but still mutually agreed to rate of $50 per hour?  Well, let’s see now…time for some math!  So, if I’m generous and use April 30, 2013 as a start point that works out to…lessee here…oh, my…that’s exactly 80 weeks today.  Hm.  80 weeks.  So, at 80 weeks times 20 hours minimum per week times $50 per hour PLUS the back wages you owe me of $2675 the total amount you owe (as of today anyway) comes to:

 

$82,675

 

And let’s be clear for a moment: your smartmouth lawyer suggested I could bring this situation up when “when we sue you for defamation…if the defamatory post is not removed and you fail to provide written confirmation to this effect by September 30”.  Let’s forget for a moment that such a suit would be frivolous because the statute of limitations of your claim has clearly and unambiguously elapsed.  Let’s say I don’t immediately assert that slam dunk defense and let’s say the judge sees some kind of merit in equating what were clearly expressed personal opinions to defamation (which he/she won’t but hey, we’re playing fantasyland here).  Guess what: we won’t be trying such a claim in Philadelphia.  We’ll be trying it in Georgia.  The doctrine of personal jurisdiction is actually a thing (ya’ll might want to look that up) and should you bring your frivolous lawsuit for defamation in any place other than a court that has jurisdiction over my location, it’ll get tossed out.

So, in the event you were hoping your empty, specious threats of legal action against me for discussing my experiences and reactions to your theft of my services and nonpayment of my entirely valid claims would work…they didn’t and don’t and fuck you for thinking they would.

Mustafa Sualp, if you don’t want to see your name or AEFIS’ name come up in a vanity search for the same and discover things like this, there is a much easier way to ensure that this doesn’t happen: honor your agreements, abide by your contracts, and act with a veneer of at least some pretended decency.  The money you failed to pay me for services I rendered is the same money I use to pay my bills and feed my children.  If you think for a single moment that your lawyer and your ridiculous threats relayed through him mean anything in the face of the ABSOLUTE FUCKING TRUTH then you need to attempt to associate with people possessed of dignity, integrity and honesty because this isn’t how you deal with us effectively.  A lawyer friend of mine whose counsel I value once told me of the legal maxim “the truth is an absolute defense”.  The post of June 10 was such a truth mixed with my First Amendment right to express my opinion and this post if more of that.

You have three options as I see it (this would be an example of an opinion about to be expressed):

  1. Pay me what I am owed and, as I generously offered in my 9/25/14 email to your mouthpiece, I’ll remove the offending portion of the June 10, 2013 post as a kindness.  NOT in consideration of your payment…but because you eventually decided to act honorably and decently and I’d consider myself to be mean and vindictive to continue to display my opinions of a complaint amicably (if ridiculously tardily) resolved.
  2. Stop with your fucking threats and sue me for either breach of contract or defamation.  Bring your “evidence” and I’ll bring mine and we’ll ask a judge to decide.  You know how that will work out and I will, of course, also tack on a claim for legal fees and costs I incur for even addressing your outrageous assertions.
  3. Shut the fuck up and put up with this post and the previous one and take it as a lesson for what could happen when someone thinks you’ve defrauded them for services rendered.  I essentially wrote off what you owed me long ago…but fuck you if you think I haven’t purchased the right to complain about it.  I have.  You want to buy that right from me?  Contact me and I’ll be happy to discuss a mutually beneficial agreement.

Either way, take your own insipid advice and don’t underestimate MY fucking resolve.  I am the wronged party here and I do not bend knee to idle threats or compromise my personal integrity or principles.

Oh, and by the way, per the combination of the contract addendum and Section 9(d)…the meter’s still running, asshole.

My name is Euroranger and I approved this message.

Posted in Amusing, Coldfusion, Errata, Web Dev | Tagged: , , , , , | 6 Comments »

Brave New Transparent World

Posted by Euroranger on December 4, 2013


No kidding.

So, a very brief post today (as I am actually gainfully employed and doing employment related tasks).  I contribute to a tech site as the resident CF expert (to answer your question, no, they probably couldn’t find anyone else to do it) and that site has a common forum area where various folks post conversation topics and then other people comment on them and so on.  Usual intarwebz forum.  Anyway, talk to enough people over time and you do start to get to know something about them.  People make references, drop tidbits of info that, individually don’t make up very much but taken as a whole can start to give you an idea of how those people might be in person.  One of those people is a woman whose persona, in my mind, has taken several definition turns in my own mind.  You know how you form an idea of someone you’ve never met and then you learn something about them so you update that mental picture you had?  That’s the situation I’m talking about.  I read what she writes on the tech forum.  Some time back, we friended one another on Facebook so I thought I knew her well enough as a complete stranger anyway.  To her, she’s who she’s always been.  She knows her.  I don’t.  Anyway, I mention it because earlier today as I was bored and rolling through things to alleviate my boredom, I ran across a link to a blog she keeps.  I thought, hey, I know this gal…let’s go see what she has to say.

Turns out, I didn’t know her at all.

I don’t want to be callous or uncaring or perhaps say something untoward that might come off as unfeeling but several months back she went through some personal relationship turbulence and used her blog as sort of a personal diary outlet.  Oddly enough, I tend to do the same here from time to time…but not to the degree this lady did.  I read several of her blog posts that, presumably, she didn’t mind everyone knowing the content of.  After a time, I quit reading because it felt almost like I was reading someone’s diary.  I discovered personal details about her that I didn’t know about and while I don’t mind knowing them (they don’t change my opinion of her as a person) I wonder how she’d feel knowing I’d read them.  We’ve never met, never even exchanged words really but I feel like I’ve intruded someplace I ought not to have been.

What I come away with is a new appreciation of how technology is changing personal interactions people have (or may not have) with one another.  I’ve read all sorts of personal things on the web before.  I wander and surf and read all kinds of stuff.  I’ve never read them though about someone I had a preconceived image about…and it was awkward.  I’m in the last leg of finishing a web application that has a strong social media element to it and, in fact, I’m working on how to allow people to incorporate their blog postings into an overall, one glance snapshot of their business.  I’m now ruminating on how I might could build tools into my app to allow people to perhaps edit or sanitize social media entries.  Maybe I’m overreacting.  All the same, it’s been some time since I encountered something on the web that really makes me pull up short and pause and consider things for a moment.

My name is Euroranger and I approved this message.

Posted in Errata, On the web, Web Dev | Leave a Comment »

Watch Where You Step

Posted by Euroranger on August 16, 2013


GIFT

This is known as the Greater Internet F***wad Theory. Seems funny or amusing but the more time I spend on the net (and I spend a ton) it becomes less “theory” and more “law”.

As most of you know who do roll through here, I’m well into my forties, am married, have kids, 2 dogs, a mortgage and so on.  I also own my own internet consulting business, am an application developer, game online and have a fairly juvenile sense of humor.  In other words, the first factual statement doesn’t typically have a large Venn diagram overlap with the second but, that’s me and I like it like that.  Most days anyway.  It seems I’ve managed to successfully master being a responsible adult and parent while still retaining my enjoyment and occupation with things that normally draw younger and, typically, much less mature folk.  And while I have no idea when or how that happened, I’m okay with it.  Sometimes, though, I forget that I used to be one of those very people until I run into one (almost always online) and then I’m reminded of just, well, how much I’ve aged I guess.

You see, a couple of posts back, I got to enjoy the attentions of someone though, who they are actually employed as a chief information officer, seemed to know remarkably little about how the internet actually works.  She stalked me to this blog, read something she didn’t like and up and terminated a development contract on that basis…and that’s fine.  It was entirely their prerogative to sever the relationship anytime they so chose.  What was interesting though was rather than be up front and honest about why they did so (they said it was work performance which, as of day 9 of a contract, is kind of a joke and despite moving more support tickets in those 9 days than they’d moved for probably 6 months) she lied to me in an exit interview whilst thinking she was being sly and crafty with her internet skulking around.  I like to imagine she had the Mission Impossible soundtrack playing in her head while she did her digging.  I also imagine she was less than amused when I penned an article about her complete with a hidden message that I only advised her about AFTER she decided to ask her HR people to “add it to my file” (as though a file on a 9 day employee will amount to anything anywhere to anyone).  Because she decided to copy everyone, I was kind of pleased to see her hoist by her own petard, so to speak, when I hit “reply all” to expose her idiocy to everyone who bothered to look (and yes, they did).  Now, in all honesty, I thought her particular kind of ignorance of a medium for which she was employed to be at least semi-knowledgeable about was probably a rare thing.  You can imagine my surprise when I encountered it again today.

As normally happens when it comes to braggarts and those in general who are far more impressed with themselves than facts would normally allow, this fellow felt he was safe behind the invincible banner of internet anonymity when he should know better that he’s not and so he proceeded to bluster about as though he were more than he actually is.  And you know what, where I might once have cared about such things, these days I know that imbeciles like that are literally a dime a dozen and that the internet is rife with assclowns like that.  It’d be like getting miffed at a raindrop in the middle of a downpour so I resolved to pity the turd and move on.  And that’s where it would have ended even after I got to have this poor excuse for a boy actually trying to threaten me earlier (if making silly boasts on an internet message board qualifies as this generation’s “threats”):

Now, in all fairness, when he says he’s “coming for me”, it could just be one of those terms kids use to declare his undying gay love for me. I have no idea what he meant by “growing eyes in my ass” though. I guess it was supposed to be threatening.

But see, I’ve HAD kids threaten me before with the whole “I got yer IP” and such.  Normally, such outbursts occurred in gaming servers and simply expressed the outrageous amount of butthurt they were enduring due to something I did, was doing, or was continuing to do.  I can’t tell you the number of times I’ve seen this but I normally chalk this up to being 11-14 years old, prepubescent, little rage machines but even with this, it was all kind of sadly amusing and entirely dismissible as someone who lacked even basic impulse control.  That was, til he decided that making minor humorous threats on a chat forum wasn’t enough…and so he came here to continue:

His best shot I suppose. I especially like the line about “white women”…as though that’s some kind of special qualifier. It’s just so darn precious.

Or maybe “awkward chinless turtle”. Whatever. The turtle’s got himself a “real assault rifle”…although I doubt an adult was around when this pic was snapped.

Now, as most folks who know me personally will likely attest, I’m a kind of laid back guy and will let most slights roll…but damn if that’s just not how I feel today.  See, for a dude who likes to make threats and go about calling himself “Apoplectic Ape”, when you actually cast a glance at Eric Giroux, “ape” is probably the last animal you’d likely ascribe to his general appearance.  Maybe “skinny weasel”.  Or perhaps “dimwitted jackass”.  Whatever you come up with, it’s hardly likely to be a synonym for “hardened, ass-kicking, internet tough guy”…but that’s apparently the way he sees himself.  What’s truly impressive is that he’s apparently a “digital marketing specialist”.  This suggests he ought to know something about how that whole internet thingy works.  Which is surprising because it takes little to no effort to unmask my sinister stalker.  See Eric here, well, he lives in an apartment in Lawrence, Kansas (awful long way for you to “come for me”) but works for a company called “DealerFire”.  I wonder how they’d feel about one of their recently hired account managers posting juvenile inane crap like he seems to enjoy doing.  Wonder how they’d feel looking at all the time he spends on social media sites being a smartass, repellent dick in general?  Maybe someone should ask.  I’ll bet they’d be interested to know.  I mean, outside of throwing cash, pouring gold bottles (“gold bottles”?) on white women and “stomping on the homeless when the cops aren’t looking” (establishing his “badass” cred I’m guessing here), Eric stays busy pissing away a fair chunk of his day spouting all sorts of puerile bulls**t whenever the mood strikes him…and that appears to be “frequently”.

What’s more amusing is his attempt to spread what he considers his “dopeness” (yeah…really…it’s a word he uses to describe one of his “notable” web properties) as though some 20 something, former KU frat boy douchebag whose entire claim to fame to date was sticking his folks with his offspring while he goes recording himself drinking beer (gasp!) outside (Gasp!) IN THE SNOW (GASP!) whenever he’s not laying down his essential brand of internet toughness on those he clearly has established to his own satisfaction that he’s superior to (read: “everyone who ever beat his geek ass in school and those who can’t actually reach him to do it today”)…all in orange crocs.

So, word to you Eric: I promise…really REALLY promise…I’m veritably pooping in my drawers at the very thought of you coming for me via my IP address (which of course you don’t have because, hey, you can’t get one simply because you wish REALLY hard and hold you breath for it).  Yep, I’m trembling in abject fear of your gangly, gawky, awkward self “coming for me” despite the eyes I’m furiously growing in my ass this very second in breathless anticipation of your arrival.  Before you head out on your quest for epic internet retribution for calling you out as the spineless, ignorant, boasting dumbass you simply had to double down on to emphatically prove me right (I didn’t need the assist), maybe you should share your evil plans with Mommy, Daddy, Ashley and little Jackson.  Mommy and Daddy will likely chuckle with mock levity at my impending doom at your assuredly fearsome hands…and then offer you a juicebox and cookie and send you out to play.  Ashley might take you more seriously and wonder if this is yet another ill-considered battle she’s going to go need to rescue her eternally deluded little bro from.  Jackson, well, if you don’t come back, he can probably succeed in changing his name to something that doesn’t link his future to his daddy’s idiotic past.  The kid needs a better chance than that.  Maybe you shouldn’t sell your uncle’s couch.  It’s not likely your new “girl”friend will want to keep it…what with all the stains on the upholstery and such.

But anyway, enough of this.  I have no plans to roll into Lawrence anytime soon (especially not since you’re up in Oshkosh right now) so let’s go ahead and call a truce.  You stick to being a back-flipping, pretentious, string bean, bag of douche with delusions of grandeur that exists as an object lesson to…well…everyone who isn’t you and I’ll stick to me being me.  However, if you’re still going to go about casting yourself as some kind of internet marketing specialist, go ahead and learn how pathetically simple it is to dig you and every facet of your insipid life up in a matter of a few minutes.  Oh…and “bland life”?  LOL!  Yep, guess I’d have to tip the hat to you on expertise on that, sport.  You’d be best to judge…from either Lawrence or Oshkosh.

Pictured above, Eric Giroux of Lawrence, KS. Proud graduate of KU and holder of the prestigious May 2012 cover of (what the hell incestuous mag was that called?…oh yeah) AutoSuccess Magazine. Thrower of cash, pourer of bottles, stomper of the homeless, seller of other people’s furniture, comer for motherfuckers, and general all around bad ass of the intarweb tubez. Also, proud possessor of the Orange Crocs That I Wear While Attention Whoring (some more…for crissake, give it a break kid) On My Mommy And Daddy’s Front Lawn. Yeah, I know you thought I was kidding about the orange crocs. Sadly, not even close to kidding. Are you really surprised tho that my newest nemesis dresses via Garanimals? I’m not.

Addendum:  So, for those who don’t read the comments, young Eric here has chosen “bluff” rather than “man up”.  I myself have a stepson in his 20’s who also makes exceptionally bad decisions (except he’s learned from his for the most part).  All kids that age do.  Eric, however, was given a couple of chances to accept what is patently obvious and sail away relatively unscathed.  I gave him a clear route for taking this post down…he responded by switching accounts on the site where this all started and then posted…hell, I’ve lost count…quite a few comments to this blog today starting from begging and pleading and eventually running straight to outright lies, more ignorant and offensive language and finally to outright daring me to inform his employer (whose time he has wasted in exceptional amounts today).  I truly would have preferred he not push it to this point…but hey…so be it.  Maybe his employer won’t care.  Maybe they’ll be cool with his smack talking and acting like a prick on the web.  Maybe they won’t care they’re paying a salary for some kid to internet stalk people while he should be doing company business.  I guess we’ll find out.

Trace 1 – This is the account he uses to post his particular brand of insult on the social media sites he whiles his days away on. http://disqus.com/Apoplectic_Ape/ Make note of the link to his web property sneakhype and that he lives in Lawrence, KS

Trace 2. This is sneakhype.com’s contact page. Notice the 4 Twitter accounts (we’re down to 4 people). Anyway, 2 of them are Kansas with one specifically Lawrence.. 

 

Trace 3. This is the one specifically matching Lawrence, KS just like the Apoplectic Ape account. Gee, what are the chances that of the 4 accounts, 1 of them would feature a background image of an ape, contain tweets referencing the site he visits as Apoplectic Ape and both this account and the Ape account are from Lawrence? Pretty close to zero.

Trace 4. Unfortunately, while also talking smack, referencing clear connections and such, our genius of social media uses this same Twitter account for his actual job (as opposed to the one where he curbstomps the homeless).

Trace 5. Of course, when you’re too lazy or stupid to use a different Twitter account for your repellant social media tendencies, people who you threaten and harass might decide to follow that up. This here is the account he’s speaking to, in this case, Corey at Dealerfire. But surely that’s not enough to go on right? Nope, you’re right…

…but this probably is. Says it there bold as day. Also claims the sneakhype site as his as well.

Anyway, this is how someone who decides to follow, harass, threaten and then finally dare someone gets famous on the internet. Or, you could just call it “bad judgement”.

My name is Euroranger and I was dared to approve this post.

Posted in Amusing, On the web, Web Dev | Tagged: , , , , , , , , , | 15 Comments »

…and when Losing is actually Winning

Posted by Euroranger on June 10, 2013


Yeah, I’m juvenile this way. Still, good advice is good advice.

So, as many of you know, I’m a software developer.  Who else would sit at their desk 12-13 hours per day without restraints or really good meds?  I pen posts here in increments when I simply need to find something to distract myself from my daily professional activities.  Typically those distractions are things like wanting to simply give my brain a break from trying to untangle unnecessarily complicated code, learn something more about how to understand the black magic some DBA used when encapsulating business logic in a database…things like that.  I’m relatively good at what I do so I understand most things I see and can figure out most of the rest that I don’t.  I’ve been doing what I do for somewhere short of 15 years now so there isn’t much code or data wise that I can’t handle.  To that end, I make a fairly comfortable living primarily as a contractor while enjoying the revenues I get from personal projects that continue to make my customers happy.  I do well enough, in fact, that I have time during the week to take on additional work.  Now, a great many of you might think that working from home would be ideal and who couldn’t be delighted to do such work?  No commuting, no dress code, flexible hours and the like is cool, right?  Well, it is but there are distinct pitfalls that many wouldn’t realize.  One of them is that you typically don’t ever get to meet the people you’re working for.  That sounds minor but more and more, I’m coming to discover that it’s actually a major piece of a potential employee or contractor who is trying to size up a work opportunity for suitability.  By virtue of the fact that you’re seeing this comprise the topic for a post, I’ve had recent experiences that I feel I need to vent about share with those thinking of doing this kind of thing.

Thieving douchebags. Yeah, you should avoid them as well.

Several years ago I briefly worked as a remote developer for a firm in Jacksonville, FL (keep in mind, I’m located outside the Atlanta, GA area) who had a grass roots political organizing application.  Not to get into the specifics of the app because it was way too ambitious given the owner’s timeline, funding and overall technical acumen but I did code some pretty cool modules for this application that even today (roughly 4 years later) I’m still pretty proud of (think a Google maps mashup that would create a walking route overlaid on a map for volunteers to go door-to-door for “get out the vote” drives with pinpointed addresses for political supporters with a map popup with details for each address…yeah, it was damn cool).  Anyway, long story short, the owner turned out to be a budding little criminal and it wasn’t until after he decided that paying me was “optional” that I discovered that he’d done the same to the two previous remote developers who’d done work for him as well as later hearing the same about two subsequent employees.  He did it enough that he rated an article in the Florida Times-Union for his activities.  He’s now a cable installation tech in Anchorage, AK.  My guess is that Anchorage is probably as far as he could run away from his legal troubles back in Florida that didn’t require the use of a passport.  Lesson from that: if the employer is short, seems slimy and tries to impress upon you who his friends are to show big a wheel he is…be careful.  Narcissistic a-holes don’t much care about anyone but themselves.  I did contract work for another 3+ years after that without incident.  Long jobs, short jobs, one off jobs.  They all worked out and I did good work for them and they paid me what I was owed…which is really all I’m after.  But then I took a contract with a firm in Philadelphia earlier this year that made me recall why contracting can be such a racket.

Damned shame closets don’t hold all the thieving douchebaggery in. Guess they’re not built for that.

Now, this firm, to be honest, appeared to be on the up and up.  It was a small, start-up like company who were providing assessment tools to the post-secondary education market (read: “colleges and universities”).  This time I actually flew up to Philadelphia to make the acquaintance of the owner and other folks I’d be working with.  They all, on the surface, seemed to be a nice group of people.  But a couple of things were apparent initially and became more ominous as time went by.  One of those things was the number of previous developers’ notes I was seeing in the codebase I was assigned to work on.  Now, keep in mind, the entire team was comprised of just 4 people (owner, project manager, database/network guy, lead CF dev) plus me but as I progressed through the code I saw notes in there from no less than 5 other devs who had worked on this code…within the previous 6 months…none of whom were still with the company.  Yes, that did ring alarm bells but not loud enough that I had reason to evacuate.  The other thing that happened was the announcement shortly after I started that the project manager would be leaving the company.  Now, this in and of itself wasn’t anything to be concerned about but she was, seriously, the only employee that knew anything about what was going on.  It became clear to me very early on that if she got hit by a bus or was somehow otherwise removed from the picture, that this company would struggle mightily.  Her reason for leaving though was even more suspect.  She was moving from Philadelphia to Pittsburgh for her husband’s job.  However, as I was doing MY job remotely and others (especially the owner) did much the same…why did she choose to not do her job from Pittsburgh remotely?  She easily could have but decided not to…and explicitly told me she didn’t have a job lined up in her new locale.  I don’t know about you but my family would find it difficult to get by on one income if we’d been relying on two…but this girl admitted it would be tough going and yet STILL didn’t seek to do her job remotely.  Third thing was the sudden “disappearance” of a remote developer they had who was in California.  One day up and quits responding to emails, Skype messages, everything…and nobody seemed at all concerned or surprised by it.  When most people go suddenly missing from their jobs, more often than not, it’s the employer who ends up calling someone to ask why such and such hadn’t been in to work recently.  Not so these folks.  The owner made a point of bringing it up during a telephone conference that he “was probably in jail” and had had other such occurrences before…except that this was news to both the lead dev and the database/network guy when I mentioned it later.  Anyway, long story shorter again, these folks called me one day to tell me to stop working despite the fact we had a contract that specified minimum guaranteed hours but when I asked if I should expect more work or if this was their way of ending the contract they said they’d have more work…it was only temporary.  Temporary, in this case, actually meant permanent and also apparently meant they’d decide to not pay me for the previous week of labor I’d provided.  They also decided to do this to their lead, in-house developer, as well and they stiffed him to the tune of around $15K.  The lesson I took from that: don’t wait until the warning signs are so piled up they’re like knocking over furniture before you make a move to protect yourself.

So, while those two were bad enough on their own, they had something in common: those assholes pretty much robbed me for their own gain.  However, something happened just this morning that makes me nostalgic for straight up crooks like that.  Recently, I entertained an opportunity to take on a FT developer role that I saw via LinkedIn on May 14 (that’d be just 3 weeks and some as of today).  I read the listing, knew I had the time and certainly the qualifications for the remote, telecommute position…so I applied and in short order I was interviewed and pretty much immediately offered the job.  Great right?  Well, on the surface you’d think so.  I mean, it’s a non-profit located in Maryland who caters to the education industry (something I already had a few years experience with).  The salary was low for my experience level but then again, I didn’t really take the job for the pay.  I took it for extra money and to stay gainfully occupied.  While they described their technical situation in terms that suggested they knew their application needed the kind of help I could lend it, it wasn’t until I actually got a look at their code and database that I realized the extent to which their product suffered.  For you non-devs out there (most of you, I think) the following paragraph of my admittedly subjective opinions will seem like Greek but believe me, this gets into nightmare territory dev-wise.

Quality Matters...somewhere else.

The only way this logo could be more ironic is if it was made with actual iron.

To begin, the application(s) they describe are actually one big application, not separated code-wise at all.  Crossover identity issues abound.  They move data around in the application via URL or form variables, both of which are ridiculously easy to hack and, for which, their code had nearly no validation or even any rudimentary protection whatsoever.  Further, while it was running on a relatively recent version of the server software I specialize in (ColdFusion) it was coded as though it had been written perhaps 10 years ago.  No concern with code organization, multiple redundant pages, absolutely zero use of any Object Oriented Programming, little code re-use, nothing to indicate that anyone who had looked at it had done so in the past decade or did so with any expertise whatsoever.  Potential SQL injection opportunities on practically every form page, easy to invoke looping race conditions, cross site scripting attacks…you name it and this application was ripe for it.  On top of that, as a new dev, I had no documentation, the code contained no commentary whatsoever, business logic was entirely contained in the CF code (as opposed to the more secure and more efficient database), data was stored with little regard to efficient retrieval and lookup tables?  Nah, who needs those when you can store all your data as single flat files?  And the cherry on top?  It’s all on one box.  Not just the database and codebase but the development environment as well as their production environment…all one box.  No versioning control software to be found either which means that if (when) their site is ever hacked, they have a snowball’s chance in hell of recovering the code and/or data and bringing up a restored box (and why mention the failover backup box when it doesn’t exist?).  In short, from a developer’s perspective, calling it a “challenge” was probably the nicest thing you could say about it.  But, as I gained access to their technical resources I resolved that I’d move methodically through this steaming turd of a Fisher Price application and, by God, make it better…and I was.

That is, until this past Friday.  Having cleared roughly 3/4 of the outstanding tech tickets in just 8 days and having only the ones that required greater business knowledge than I possessed remaining, I got an email Friday afternoon informing me that they were disappointed with the volume of my work product and had scheduled a performance evaluation for this morning.  Naturally, I was fired during that call today.  Keep in mind, this was but day 9 of my employment and only 7 days after I got access to their code and database.  I’d been given no goals, no expectations, nothing but tickets to work on and for which I had cleared all but the 4 I lacked the requisite business knowledge to address.  In short, I was fucking lied to this morning.  Nobody hires an employee, says nothing about their work performance in the interim and then fires them less than 2 weeks later.  I’m not all that broken up about not working further for such a schizophrenic and obviously dysfunctional imbecile like the woman I was reporting to but for crying out loud, at least be a prepared asshole when I question exactly what goals did I fail to meet.  The conversational equivalent of a shrug isn’t what qualifies a fat chick to be a CIO these days is it?  Somebody enlighten me some here.  I thought competence still had a spot in the American workplace.

Anyway, all of the above is merely my opinions on the companies involved (namely Patriot Information Systems which is unsurprisingly now defunct, AEFIS, Inc which will likely become defunct in the near future and Quality Matters which while the company name criminally abuses the definition of the word “irony” will likely stagger along like a drunk toddler for some more time) and shouldn’t be considered anything other than my right as a person relating anecdotal recollections of events I was involved in.  If any other devs wish to work for AEFIS or Quality Matters, I’ll be pleased to stand aside and watch you rush to your predictable reward.  After all, you shouldn’t believe everything you read on the internet…but some of it should cause prudent people pause.

My name is Euroranger and I approved this message.

Posted in Coldfusion, Web Dev | Tagged: , , , , , , , , | 3 Comments »

Odd Struct Behavior in CF9

Posted by Euroranger on March 17, 2011


No politics or profanity today.  This post, however, is the distilled result of much profanity-inducing code angst…and I simply had to share.  Actually, I had already shared this a few weeks back on a tech forum I help out on but figured it couldn’t do any harm to repeat my discoveries here.

It’s not often one runs across something in CF these days that qualifies as an actual bug.  This isn’t one (I think) but I encountered this issue recently and wanted to post it up on the web somewhere so when others encounter it Google will have a reference to this post in the appropriate search results.

I’ve recently been tasked with building a centralized site error catcher for my employer.  They have dozens of sites running on both CF8 and CF9 and they needed a way to collect all the errors from all the sites and funnel them to one database table collecting things like the site the error occurred on, form/session/URL/client variables in effect at the time of the error and, of course, the error content itself.  To do this, I built code in each site’s onError method for each Application.cfc.  As we know, the onError method fires for each exception error generated on any sites using that Application.cfc.  My plan was to collect the various bits of information I needed, drop them into a Coldfusion struct, serialize that struct into a WDDX string and then store the resultant string in the database.  Later, calling up a particular error would require only that you grab the appropriate record from the database, deserialize the string from WDDX back into a struct and then CFDUMP that struct to the screen for the dev to examine.  Understand, when building the struct initially, I am storing structs inside the error storage struct that I’m serializing.  That is, I’m doing something like this:

<br />
&lt;cfset errorStruct = StructNew()&gt;<br />
&lt;cfset temp = StructInsert(errorStruct, &quot;ErrorTime&quot;, Now())&gt;<br />
&lt;cfset temp = StructInsert(errorStruct, &quot;CGI&quot;, cgi)&gt;<br />
&lt;cfset temp = StructInsert(errorStruct, &quot;Error&quot;, arguments.exception)&gt;<br />
&lt;cfset temp = StructInsert(errorStruct, &quot;Form&quot;, form)&gt;<br />
&lt;cfwddx action=&quot;cfml2wddx&quot; input=&quot;#errorStruct#&quot; output=&quot;errorString&quot;&gt;<br />

In case you didn’t know, the onError method in Application.cfc will generate an arguments variable (it is still, after all, a CF component method) called exception that will populate with the error structure that Coldfusion creates whenever an exception error occurs.  So, on line 4, I’m dropping that CF generated error struct into my own structure (errorStruct) that I also store the CGI, form and other things in (the example isn’t a line for line copy of what I’m doing).

Anyway, this encountered a problem for some errors wherein the string turned out to be too long (in my case, greater than the 64,000 characters I had allotted via the datatype for that column in the database table).  I realized by wholesale saving the entire error scope that I was saving things I didn’t really need: namely things like the StackTrace and objectType items found in the CF generated error struct.  My idea was to remove those from the CF generated error struct before storing them in my custom errorStruct…and this is where I encountered the problem I’m writing about.

For reference, I’m using CF9 as illustrated by the dump of the server scope:

 

CF9 Server Scope

My server scope dump

And for illustration purposes, I’m going to concentrate solely on StackTrace.  The original CF generated error struct looked like this:

CF9 Error Struct

CF9 Error Struct

So, to get rid of stacktrace my first idea was to do a StructClear which when I tried it in the onError method looked like this:

&lt;cfset temp = StructClear(arguments.exception.stacktrace)&gt;

And resulted in this:

StructClear Attempt

StructClear() Attempt

No dice.  So my next attempt was a StructDelete:

&lt;cfset temp = StructDelete(arguments.exception,&quot;stacktrace&quot;,true)&gt;

Which did this:

StructDelete Attempt

StructDelete() Attempt

Also no joy.  So, StructClear and StructDelete both failed.  My next thought was to overwrite stacktrace like so:

&lt;cfset arguments.exception.stacktrace = &quot;blorf&quot;&gt;

Which, surprisingly, did nothing per the before and after CFDUMPS of the error struct (you should see “blorf” as the stacktrace content in the second dump):

Error overwrite attempt

Overwright attempt

Now, that didn’t overwrite…but it also didn’t generate an error.  CF9 simply ignored it.  By now, it’s becoming obvious to me that CF9’s error structure is something I’m not allowed to mess with…so naturally, I tried messing with it in one more way: I tried adding to it like so:

&lt;cfset arguments.exception.testy = &quot;this is way testy!&quot;&gt;

And got the, by now, predictable result:

Error add attempt

Error Add Attempt

It didn’t add it either…but it also didn’t tell me it didn’t.  Again, it simply ignored me.

What does all this mean?  It means that it appears that CF generated structs like error are pretty much “view only” and cannot be altered.  This made me wonder if the same was true for the struct generated when you use CFTRY/CFCATCH and I found it had identical behavior to the error struct that I illustrated above.

In my case, I circumvented this issue by creating my own error struct in the onError method and populating it only with the things I needed before adding it to my overall error struct and serializing it into a string.  However, my looking through the online Adobe CF documentation doesn’t mention that either ERROR or CFCATCH structs cannot be edited by application code.  What’s worse, the error messages aren’t exactly informative and in cases like editing an existing variable value or adding a new one, it doesn’t tell you anything at all…it simply ignores you which is decidedly unhelpful behavior.

So, consider this post as a warning sign if you need to do more than simply read the contents of either the ERROR or CFCATCH structs generated by CF9.  It doesn’t appear to be possible. I do a fair amount of work with OpenBD these days and will be testing this same behavior there and will edit this post with the results from that test when I can.

I welcome comments or contrary test results.  Please post them here.

Posted in BlueDragon, Coldfusion, OpenBD, Web Dev | Tagged: , , , , | 1 Comment »

This Public Service spleen-letting was brought to you by me

Posted by Euroranger on September 4, 2009


No caption necessary

No caption necessary

When I started this blog, I have to readily admit, I did it as a therapeutic exercise.  You know, a place to vent anonymously and say, if even just to myself, the things I so desperately want to say to others but cannot.  Societal constraints against offending people are apparently too ingrained in me to allow me to jump up into people’s grilles and exercise my 1st Amendment right to free speech in their faces.  With profanity.  And possibly spittle flying.  The reasons I cannot overcome these genteel conversational rules are simple and easily enumerated:

  1. I was raised a polite person by parents who, whenever they weren’t beating the evil out of me for torturing my little sister, wanted to instill superior etiquette rules and behaviors in their only son
  2. My health insurer advises against me doing so
  3. I’m chicken

So, this blog serves as a dumping ground for my less polished emotional outbursts.  Just like reality TV, a blog is a great place to do it because others are entertained by bearing witness to some stranger’s misery.  Just like those people who slow down when driving by an accident.  Just like those people who go to Nascar races.  Watching someone else’s life pile itself into a wall in turn 4 going around a brazillion miles an hour is somehow strangely entertaining.  Anyway, I figured if I gotta unburden myself, why not do it where others can vicariously view it and then feel better about themselves primarily because they aren’t me?  In essence then, this blog is a freakin’ public service…and just like Civil Defense facilities, this thing outta come with its own air raid siren or at least a backyard bomb shelter.

However, I digress.

I have determined that it requires only 1/2 workday of my existence to pile up enough material to produce one, probably-longer-than-necessary blog entry.  As it is around mid-day, that makes it half a day…so let’s see what I have so far:

Euroranger [11:44 AM]: So…wanna hear what I’m doing?
ShadesOfGrey [11:44 AM]: ya
Euroranger [11:45 AM]: Okay…so, since Day 1 with the new job, we’ve been working from an XP box that’s located in the boss’ living room. He’s running IIS off it and that’s actually what the sites are running from as well. A real sketchy setup, right?
ShadesOfGrey [11:45 AM]: ugh
Euroranger [11:45 AM]: So, I’ve been telling him about hosted solutions (because his alternative was to drop around $10K in hardware alone and then co-lo that).
ShadesOfGrey [11:46 AM]: k
Euroranger [11:46 AM]: Anyway, long story short, he asked me a month back to research viable CF hosts.
Euroranger [11:46 AM]: So I did and sent him an email with a couple of options…this, however, was CF8 with MySQL5.
Euroranger [11:46 AM]: …naturally, him being the boss, he did nothing with it.
ShadesOfGrey [11:47 AM]: of course
Euroranger [11:47 AM]: So, a few weeks go by and we hire Dumbass.
ShadesOfGrey [11:47 AM]: I remember it so well
Euroranger [11:47 AM]: Now, as has become exceptionally clear, Dumbass, despite his claims to the contrary, knows jack and shit about MySQL.
Euroranger [11:48 AM]: So, out of the blue, about 2 wks ago, suddenly we need a hosting solution…oh, and it needs to be using SQL Server…
Euroranger [11:48 AM]: …I don’t participate in any discussion about this…as really, I could care less, I’m equally capable in either db.
Euroranger [11:49 AM]: However, rather than even speak with the recommended hosts I researched, boss (probably aided and abetted by Dumbass) pulls some hosting solution out of his ass and purchases a contract with them.
Euroranger [11:49 AM]: …that was 2 weeks ago.
ShadesOfGrey [11:49 AM]: oh lawd
Euroranger [11:50 AM]: …I got called in yesterday PM to see if I could figure out how to get our server set up and running.
Euroranger [11:50 AM]: Now, Dumbass has been supposed to be doing this since Monday…however, I discover not only hasn’t he done it, he hadn’t even logged on yet.
ShadesOfGrey [11:51 AM]: makes perfect sense
Euroranger [11:51 AM]: Still, me being the great guy I am, I work out all the RDS kinks and late yesterday I managed to successfully log onto the box.
ShadesOfGrey [11:51 AM]: why would he do the work, when he can wait and you will do it for him
Euroranger [11:51 AM]: Now, this box is Server 2008…something I’ve not seen before.
Euroranger [11:52 AM]: …however, the way this host is set up, I need access via a web control panel interface to set up the database…which, I was advised, was on another box…which is normal.
Euroranger [11:52 AM]: So, to briefly recap, I logged onto the box and set up the site, moved files and created and tested the FTP connection. The last element is…the database.
Euroranger [11:52 AM]: …and who better to leave THAT to than Dumbass…our “expert”?
ShadesOfGrey [11:53 AM]: so.. did you set up the db yet?
Euroranger [11:53 AM]: Oh no…check it…choice exerpts from the chat transcript with the boss this AM:
Euroranger [11:54 AM]: BossMan [11:25 AM]: when you try to setup a Data source in coldfusion using any account it errors and says Connection refused
Euroranger [11:55 AM]: Euroranger [11:21 AM]: He (SALESMAN AT THE HOSTING PROVIDER) was telling me you guys had installed a SQL Server instance on the 240.107 (THE CF SERVER) box. Is that not the case?
BossMan [11:21 AM]: Yes
BossMan [11:22 AM]: Their hosted SQL would only handle 500megs (OUR CURRENT DB IS BUT 210MB…AND AROUND 3/4 OF THAT IS LOG FILES AND GARBAGE TABLES)
Euroranger [11:55 AM]: Euroranger [11:27 AM]: Well, one step at a time…
Euroranger [11:27 AM]: Is there a database on the new SQL Server deployment you guys added?
Euroranger [11:27 AM]: Something like XXXXX?
BossMan [11:27 AM]: YYYYY
Euroranger [11:28 AM]: Okay…and the user account you’re trying to set up the datasource under…does it have access to that database?
BossMan [11:28 AM]: yes
Euroranger [11:29 AM]: Is is the default “sa” account?
BossMan [11:29 AM]: have tried all accounts. sa, ZZZZZ, and a new one we created
Euroranger [11:29 AM]: Hm.
Euroranger [11:56 AM]: BossMan [11:30 AM]: the crazy this is the server cannot resolve “localhost” you have to type in the IP address of the server
Euroranger [11:30 AM]: Do you have access to their shared SQL Server database (THE SOLUTION THEY SOLD US)?
Euroranger [11:57 AM]: BossMan [11:31 AM]: no
Euroranger [11:31 AM]: No, you can’t access it?
BossMan [11:32 AM]: no we were never give that because we told them from the beginning we would install our own (WHAAAT????)
Euroranger [11:33 AM]: Oh, I see. (COMPLETE FUCKING DEPARTURE FROM ANY SANE WEBSITE DEPLOYMENT)
ShadesOfGrey [11:57 AM]: lol
Euroranger [11:58 AM]: Wait for it….
Euroranger [11:58 AM]: Euroranger [11:37 AM]: Want a suggestion?
BossMan [11:38 AM]: I think I know what the issue is
Euroranger [11:38 AM]: They host CF, they host SQL Server and they have people right there…tell them to configure it so you can use it. Have them set up default passwords and then when they’re done, we change them to something else.
BossMan [11:39 AM]: this is a vertual server. probably shares a NIC and thats why it goes off server and back in to the IP Address
BossMan [11:40 AM]: virtual
BossMan [11:40 AM]: or atleast appears that way
Euroranger [11:41 AM]: I’ve never dealt with a virtual server before…
BossMan [11:42 AM]: what was the name of the hosting company you sent me
ShadesOfGrey [11:58 AM]: brb
Euroranger [11:59 AM]: So, to recap, I sent them a perfectly viable hosting solution with more than enough database space. Dumbass comes along and, because he’s a fucking liar and because my boss is apparently too dense to notice, we have to change the fucking database product from MySQL to SQL Server.
Euroranger [12:00 PM]: But, as if that isn’t enough, our existing 210MB database will apparently be too large to fit on the allocated 500MB of space on the shared SQL Server deployment this host normally offers. Again, I detect the effects of a Dumbass conversation.
Euroranger [12:01 PM]: So as to make this entire situation a complete disaster-movie-worthy epic fuckup we go out and BUY SQL Server 2008 and then install it on the same fucking box as CF8…
Euroranger [12:02 PM]: …on a hosted machine…
Euroranger [12:02 PM]: …which is running in a virtual server environment.
Euroranger [12:02 PM]: …which, surprise surprise, none of us seem to know anything about…especially our database “expert”.
Euroranger [12:05 PM]: I’m wondering if there’s an entity even more omnipotent than God…and whether he too hates me.
ShadesOfGrey [12:09 PM]: lol
Euroranger [12:10 PM]: I mean…man…you can’t make this up.
Euroranger [12:10 PM]: It’s just CF8 and a fucking database…how much more complicated can you make it you ask? Who knows? But stay tuned and find out.
ShadesOfGrey [12:11 PM]: he he he
Euroranger [12:11 PM]: I swear, I fully expect to be told next “hey, the server’s language pack is just Sanscrit…can we work around that?”…

You see, I’m a man of normal temperament just trying to do my job, get paid, take care of my family, get lucky every great once in awhile with Mrs. Ranger and pretty much just live my life in the most calm and personally pleasing manner possible.

May he rest in peace...in a heavenly home for the hard of hearing

May he rest in peace...in a heavenly home for the hard of hearing

However, omnipotent deities everywhere obviously have it out for me as there’s no way, not even taking into account I may be suffering the karma accrued in a previous life by someone like Adolf Hitler, Vlad the Impaler or Billy Mays, I should be receiving this much cosmic torture.  You, gentle reader, no matter how much you think your job sucks, should feel better bearing witness to what it is I have to put up with on, what is becoming obvious to me will be, a daily basis.  Unless yer that poofy tiger-trainer fella in Vegas who nearly got eaten a few years back, chances are your job is merely mildly annoying and not enough motivation for you to know that even if you hawked all the shit you owned you still prolly wouldn’t make bail for all the acts you contemplate committing on your “co-workers” everyday…not that I’m admitting to anything like that…just sayin’ is all.

For instance, today it’s the Friday before a long weekend.  I have friend from Canada coming into town tomorrow.  He’s returning home from Florida and he’ll be stopping nearby with his family for the night and wants us to come visit him right in the middle of the day.  He has a daughter around the same age as my own (9) and they’ve chosen the hotel they’re staying at (around 25 mi away) as it is close to a store his daughter wishes to visit.  Now given the demonstrated proof of supernatural interest in turning my life into a blooper reel of sitcom outtakes superimposed on images of suicide victims, what store could you imagine he wants to visit?  On a long weekend (which means I can’t flee town to the hills as I would normally be doing)?  On the first Saturday of college football (the first universally accepted “man day” on the calendar)?  When I have a standing invite to attend a friend’s all day college football party wherein the games are viewed on a home theatre with surround sound and whose screen area is best described using the word “acreage”?

American Girl Doll Store…that’s where.

I look normal on the outside…it’s only on the inside that I’m crying.

My name is Euroranger and I approved this message.

craig328 [11:44 AM]: So…wanna hear what I’m doing?
Rudi [11:44 AM]: ya
craig328 [11:45 AM]: Okay…so, since Day 1 with the new job, we’ve been working from an XP box that’s located in the boss’ living room. He’s running IIS off it and that’s actually what the sites are running from as well. A real sketchy setup, right?
Rudi [11:45 AM]: ugh
craig328 [11:45 AM]: So, I’ve been telling him about hosted solutions (because his alternative was to drop around $10K in hardware alone and then co-lo that).
Rudi [11:46 AM]: k
craig328 [11:46 AM]: Anyway, long story short, he asked me a month back to research viable CF hosts.
craig328 [11:46 AM]: So I did and sent him an email with a couple of options…this, however, was CF8 with MySQL5.
craig328 [11:46 AM]: …naturally, him being the boss, he did nothing with it.
Rudi [11:47 AM]: of course
craig328 [11:47 AM]: So, a few weeks go by and we hire Dumbass.
Rudi [11:47 AM]: I remember it so well
craig328 [11:47 AM]: Now, as has become exceptionally clear, Dumbass, despite his claims to the contrary, knows jack and shit about MySQL.
craig328 [11:48 AM]: So, out of the blue, about 2 wks ago, suddenly we need a hosting solution…oh, and it needs to be using SQL Server…
craig328 [11:48 AM]: …I don’t participate in any discussion about this…as really, I could care less, I’m equally capable in either db.
craig328 [11:49 AM]: However, rather than even speak with the recommended hosts I researched, boss (probably aided and abetted by Dumbass) pulls some hosting solution out of his ass and purchases a contract with them.
craig328 [11:49 AM]: …that was 2 weeks ago.
Rudi [11:49 AM]: oh lawd
craig328 [11:50 AM]: …I got called in yesterday PM to see if I could figure out how to get our server set up and running.
craig328 [11:50 AM]: Now, Dumbass has been supposed to be doing this since Monday…however, I discover not only hasn’t he done it, he hadn’t even logged on yet.
Rudi [11:51 AM]: makes perfect sense
craig328 [11:51 AM]: Still, me being the great guy I am, I work out all the RDS kinks and late yesterday I managed to successfully log onto the box.
Rudi [11:51 AM]: why would he do the work, when he can wait and you will do it for him
craig328 [11:51 AM]: Now, this box is Server 2008…something I’ve not seen before.
craig328 [11:52 AM]: …however, the way this host is set up, I need access via a web control panel interface to set up the database…which, I was advised, was on another box…which is normal.
craig328 [11:52 AM]: So, to briefly recap, I logged onto the box and set up the site, moved files and created and tested the FTP connection. The last element is…the database.
craig328 [11:52 AM]: …and who better to leave THAT to than Dumbass…our “expert”?
Rudi [11:53 AM]: so.. did you set up the db yet?
craig328 [11:53 AM]: Oh no…check it…choice exerpts from the chat transcript with the boss this AM:
craig328 [11:54 AM]: stephen.heckel [11:25 AM]: when you try to setup a Data source in coldfusion using any account it errors and says Connection refused
craig328 [11:55 AM]: craig328 [11:21 AM]: He was telling me you guys had installed a SQL Server instance on the 240.107 (THE CF SERVER) box. Is that not the case?
stephen.heckel [11:21 AM]: Yes
stephen.heckel [11:22 AM]: Their hosted SQL would only handle 500megs
craig328 [11:55 AM]: craig328 [11:27 AM]: Well, one step at a time…
craig328 [11:27 AM]: Is there a database on the new SQL Server deployment you guys added?
craig328 [11:27 AM]: Something like rpodc?
stephen.heckel [11:27 AM]: mvrdc
craig328 [11:28 AM]: Okay…and the user account you’re trying to set up the datasource under…does it have access to that database?
stephen.heckel [11:28 AM]: yes
craig328 [11:29 AM]: Is is the default “sa” account?
stephen.heckel [11:29 AM]: have tried all accounts. sa, sheckel, and a new one we created
craig328 [11:29 AM]: Hm.
craig328 [11:56 AM]: stephen.heckel [11:30 AM]: the crazy this is the server cannot resolve “localhost” you have to type in the IP address of the server
craig328 [11:30 AM]: Do you have access to their shared SQL Server database (THE SOLUTION THEY SOLD US)?
craig328 [11:57 AM]: stephen.heckel [11:31 AM]: no
craig328 [11:31 AM]: No, you can’t access it?
stephen.heckel [11:32 AM]: no we were never give that because we told them from the beginning we would install our own
craig328 [11:33 AM]: Oh, I see. (COMPLETE FUCKING DEPARTURE FROM ANY SANE WEBSITE DEPLOYMENT)
Rudi [11:57 AM]: lol
craig328 [11:58 AM]: Wait for it….
craig328 [11:58 AM]: craig328 [11:37 AM]: Want a suggestion?
stephen.heckel [11:38 AM]: I think I know what the issue is
craig328 [11:38 AM]: They host CF, they host SQL Server and they have people right there…tell them to configure it so you can use it. Have them set up default passwords and then when they’re done, we change them to something else.
stephen.heckel [11:39 AM]: this is a vertual server. probably shares a NIC and thats why it goes off server and back in to the IP Address
stephen.heckel [11:40 AM]: virtual
stephen.heckel [11:40 AM]: or atleast appears that way
craig328 [11:41 AM]: I’ve never dealt with a virtual server before…
stephen.heckel [11:42 AM]: what was the name of the hosting company you sent me
Rudi [11:58 AM]: brb
craig328 [11:59 AM]: So, to recap, I sent them a perfectly viable hosting solution with more than enough database space. Dumbass comes along and, because he’s a fucking liar and because my boss is apparently too dense to notice, we have to change the fucking database product from MySQL to SQL Server.
craig328 [12:00 PM]: But, as if that isn’t enough, our existing 210MB database will apparently be too large to fit on the allocated 600MB of space on the shared SQL Server deployment this host normally offers. Again, I detect the effects of a Dumbass conversation.
craig328 [12:01 PM]: So as to make this entire situation a complete disaster-movie-worthy epic fuckup we go out and BUY SQL Server 2008 and then install it on the same fucking box as CF8…
craig328 [12:02 PM]: …on a hosted machine…
craig328 [12:02 PM]: …which is running in a virtual server environment.
craig328 [12:02 PM]: …which, surprise surprise, none of us seem to know anything about…especially our database “expert”.
craig328 [12:05 PM]: I’m wondering if there’s an entity even more omnipotent than God…and whether he too hates me.
Rudi [12:09 PM]: lol
craig328 [12:10 PM]: I mean…man…you can’t make this up.
craig328 [12:10 PM]: It’s just CF8 and a fucking database…how much more complicated can you make it you ask? Who knows? But stay tuned and find out.
Rudi [12:11 PM]: he he he
craig328 [12:11 PM]: I swear, I fully expect to be told next “hey, the server’s language pack is just Sanscrit…can we work around that”…

Posted in Amusing, Web Dev | 2 Comments »

Name Change Pt 2 or “A Day In The Life of Euroranger”

Posted by Euroranger on September 2, 2009


Previously, on G.H.E.Y. IN H.D.:

Later that evening, I head home (the next state over) as my assignment at the client’s site has concluded and I fervently hope that New Guy’s apparent inability to do anything, even the most basic of things, correct in MySQL is a passing phase and that come Monday he will shake off his day 1 stupidity and really shine.

So, I had it in mind to regale the site with a paraphrased recitation of what happened last week.  However, it occurred to me that I’d already done that and, being the exceptionally lazy but clever sort that I am, I resolved to simply plagiarize myself and post the pertinent IM exchange I had with a good friend and colleague of mine.  He too is a developer of no small talent and shares many of the same attitudes that I hold with regard to the terminally stupid and/or incompetent.

So, without further ado, witness the grandeur of “A Day In The Life of Euroranger”:

(8:56:55 AM) Euroranger Well, while you enjoy your incompetant counterpart, I’m having a similar issue this AM.
(8:57:20 AM) Euroranger We hired a guy last Friday when I was in XXX. More accurately, the boss hired a guy. I was kinda told after the fact.
(8:57:31 AM) Euroranger The guy we hired is supposed to be a MySQL expert.
(8:57:50 AM) Euroranger …twice now I’ve had to correct him on literally the most simple shit ever.
(8:58:21 AM) Euroranger All he’s done since he got there is make preparations to version the database over to SQL Server.
(8:58:33 AM) ShadesOfGrey ah geez
(8:59:11 AM) Euroranger Yeah. Dude…I was having to work a problem on that same Friday and he’s looking over my shoulder at the query I was writing…I needed only 10 records so I drop a “limit 10” at the end…
(8:59:29 AM) Euroranger …he pipes up “Oh, that won’t work…try TOP 10 in the select statement”.
(8:59:55 AM) Euroranger I said “yeah, that works for MSSQL…this is MySQL” and he proceeds to tell me I’m mistaken.
(8:59:56 AM) ShadesOfGrey fail
(9:00:13 AM) Euroranger Course I ran his version so he could see the fail and then I went and did it right.
(9:00:25 AM) ShadesOfGrey my fav mySQL is : DESC
(9:00:56 AM) Euroranger Check this one tho.
(9:01:58 AM) Euroranger One of the queries is running slowly…not all that slow but slow enough that he IM’d me yesterday saying “it’s because none of these tables are indexed”.
(9:02:58 AM) Euroranger Well, a couple of hours later, the query is still running slow…so I go check on it.
(9:03:24 AM) Euroranger I run it in TOAD and yeah, it’s taking 7-8 secs…now it’s a complex query with 2 subqueries but still…
(9:03:48 AM) Euroranger …so I go check the indices…I swear man…he indexed every.single.column on 4 tables.
(9:04:23 AM) ShadesOfGrey ha
(9:04:40 AM) Euroranger Took me 15 mins to dump every one of those 70 or so indices and then do 4 news ones on the join cols…query now runs in around .2 secs.
(9:04:46 AM) Euroranger This is our “expert”.
(9:05:42 AM) Euroranger Now, I don’t make a habit of throwing people under means of public conveyance and such…but I did speak to the boss this AM and stepped closer to the curb anyway.
(9:06:40 AM) Euroranger Told him I have concerns.

(9:28:15 AM) Euroranger Ho Lee Shiat
(9:28:38 AM) Euroranger Check this exchange I just had with our “expert”:
(9:29:05 AM) Euroranger Dumbass [9:26 AM]: how compatable is mysql to real sql
Euroranger [9:26 AM]: “real sql”?
Dumbass [9:26 AM]: for instance, can i script tables in sql and use them in mysql
Dumbass [9:27 AM]: ive already got alot of data in ms sql and i can just script them out
Euroranger [9:27 AM]: You mean create the table creation scripts in SQL Server and then copy/paste them into MySQL?
Dumbass [9:27 AM]: yes
Dumbass [9:27 AM]: it would save alot of typing
Euroranger [9:28 AM]: You might could save some typing…but things like primary keys and such are done differently.
Dumbass [9:28 AM]: frak, ok, ill just recreate them
(9:29:39 AM) Euroranger I might cry.
(9:29:42 AM) ShadesOfGrey lol
(9:29:47 AM) Euroranger Dude…
(9:29:52 AM) Euroranger “real sql”???
(9:29:52 AM) ShadesOfGrey I feel ya
(9:30:17 AM) Euroranger Not only isn’t he an expert…he has pretty much zero fucking clue what he’s doing.
(9:30:56 AM) Euroranger He actually asked if he could do the work in MS and then move it over…holy crap.
(9:31:26 AM) ShadesOfGrey ugh
(9:31:34 AM) Euroranger …and he ASKED!!!
(9:31:43 AM) Euroranger …because he DIDN’T KNOW!!!
(9:31:58 AM) ShadesOfGrey I’m not sure if he earns or losses points for asking?
(9:32:17 AM) Euroranger He gets a blindfold to go with his cigarette…that’s what it gets him from me.
(9:32:28 AM) Euroranger Sweet jebus.
(9:32:59 AM) Euroranger Why does God hate me so such to afflict me with this?
(9:33:08 AM) ShadesOfGrey good question
(9:33:27 AM) ShadesOfGrey perhaps God reads “ALL” your im’s?
(9:33:30 AM) Euroranger So, while you have yer lazy dev…I’m dealing with the terminally underqualified.
(9:34:10 AM) Euroranger I always assumed he did. He is God after all. How much of a God would you be if you lacked L337 h@Xz0Rz 5k33lZ?
(9:34:55 AM) ShadesOfGrey true dat
(9:35:05 AM) Euroranger I’m thinking of making my blog nothing more than cut/paste segments from my chat transcripts.
(9:35:27 AM) Euroranger That shit just writes itself.
(9:41:41 AM) Euroranger Dude…I swear, that chat transcript is my next post…with inserted commentary.

(3:27:16 PM) Euroranger Sweet jebus I may have to kill the new guy
(3:28:02 PM) Euroranger Dude can’t even trace how the app works…this is drop dead simple and he’s not getting it.
(3:28:23 PM) ShadesOfGrey I feel yer pain
(3:28:48 PM) Euroranger Educate me.
(3:29:07 PM) Euroranger Request scope…where is is maintained in CF?
(3:29:18 PM) Euroranger My recollection was server memory.
(3:29:21 PM) ShadesOfGrey aye
(3:29:31 PM) Euroranger You’re sure?
(3:29:34 PM) ShadesOfGrey request = application in that regards
(3:29:42 PM) ShadesOfGrey 98% sure
(3:29:54 PM) Euroranger Not registry?
(3:30:11 PM) ShadesOfGrey Client
(3:30:19 PM) ShadesOfGrey is sometimes stored in the registry
(3:30:22 PM) Euroranger Client is registry…unless you specify database.
(3:30:24 PM) ShadesOfGrey that be bad bidness
(3:31:32 PM) ShadesOfGrey right
(3:31:35 PM) ShadesOfGrey or cookies
(3:32:45 PM) Euroranger Well, new guy figures he’s gonna lecture me on how to build an app now.
(3:32:58 PM) ShadesOfGrey ooo can you record it for me
(3:33:01 PM) ShadesOfGrey I need laughs
(3:33:08 PM) Euroranger I swear, if he wants to shit in his own hat and then pull it down around his ears…I’ll hold the brim for him.
(3:33:35 PM) ShadesOfGrey wow.
(3:33:44 PM) ShadesOfGrey never heard that one… but I’m saving it
(3:33:58 PM) Euroranger Enjoy it.
(3:34:04 PM) Euroranger Here’s a dose:
(3:34:05 PM) Euroranger Dumbass [3:24 PM]: ok, what are you using to load the page?
Dumbass [3:24 PM]: your embedding, but i need for my template to post to itself
Dumbass [3:24 PM]: and you hvae some campagnmgmt in the url
Euroranger [3:24 PM]: For a form?
Dumbass [3:24 PM]: i use fuseactions posting templates to itself
Euroranger [3:24 PM]: Just omit the action attribute and it submits to itself.
Dumbass [3:24 PM]: so the entire module is on one page
Euroranger [3:25 PM]: There is no fuseaction in this app.
Euroranger [3:25 PM]: Essentially.
Euroranger [3:25 PM]: It’s a handled 404 redirect/parse environment.
Dumbass [3:25 PM]: and no session vars?
Euroranger [3:26 PM]: There will be. Right now, they’re in the request scope.
Dumbass [3:26 PM]: ug
Dumbass [3:26 PM]: ok
Euroranger [3:26 PM]: output request.auth struct and you’ll see them
Dumbass [3:27 PM]: no wonder it never logs me out, request vars are persistent, thats bad on the server scope
Euroranger [3:28 PM]: Request isn’t server scope.
Dumbass [3:28 PM]: they are stored in registry
Euroranger [3:28 PM]: But yes, they don’t time out as of now.
Dumbass [3:28 PM]: yes, but they query on every single page to cfdata
Dumbass [3:28 PM]: every time
Dumbass [3:29 PM]: session are much better, they are client side, and not persistent, but we will address that another day
Dumbass [3:29 PM]: i see how you are maintaining includes now
Euroranger [3:30 PM]: Request scope is maintained in server memory for CF…not registry.
Euroranger [3:31 PM]: The client scope that carries them over requests SHOULD be stored in the db…for now, with the way the app is designed, query load will not become an issue as this app will never host thousands of simultaneous connections.
Euroranger [3:32 PM]: The way it’s designed now, it does allow session-like handling but doesn’t require user cookies to be enabled.
(3:35:46 PM) Euroranger You’d think God would be satisfied with hating me but once per day. Surely he has other people whose collars he can crap down aside from mine.

Yeah, it's pretty much like this

Yeah, it's pretty much like this

So, in but a single week, Dumbass exposed himself (not sure that’s the correct turn of phrase but it seems strangely appropriate here) as possibly a complete fraud for the position for which he was hired.  There have been other incidents since this chat transcript took place.  I mean, it has been TWO whole more business days right?  WRONG!

It’s been TWO whole more business days…AND TWO whole weekend days.  That’s right, this past weekend I spent several hours going behind Dumbass and fixing all the crap he managed to break as my boss called me at home…on a Saturday…several times…and asked me to fix several things simply because Dumbass lacks the coding acumen necessary to do even the simplest of tasks.  Has it gotten any better this week?  Perhaps Dumbass was simply trying to do too much on an app he wasn’t familiar with.  Maybe he wants so much to contribute that he’s taking on things ahead of a prudent schedule.  Yeah, that could be it right?  I expressed an observation on his progress just a little while ago in fact:

Euroranger [9:07 AM]: …good grief…it gets worse.
Euroranger [9:08 AM]: Dumbass copied the application.cfc I have for a particular client and dropped it on the top level root this past Sunday.
ShadesOfGrey [9:08 AM]: oh snap
Euroranger [9:08 AM]: Yeah…magically errors start showing up and this is happening when the boss is trying to show a different site to his investors.
Euroranger [9:09 AM]: …this Dumbass is a fucking walking talking disaster.
ShadesOfGrey [9:09 AM]: fwtd
ShadesOfGrey [9:09 AM]: I like it
Euroranger [9:10 AM]: His demonstrated technical prowess to date would indicate he shouldn’t be let near a computer more complex than a fucking Speak ‘N Spell….
Euroranger [9:10 AM]: Maybe a Etch a Sketch…
ShadesOfGrey [9:10 AM]: the ol speak n spelll litmus test
ShadesOfGrey [9:10 AM]: I shall have to use that
Euroranger [9:10 AM]: Looks kinda like a computer.
Euroranger [9:11 AM]: You know those round toys with the pull string and the little arrow in the center where when you pull the string, the arrow spins around and it stops on a picture of an animal and the toy goes “The cow says ‘Mooooooo'”? Yeah, he might qualify for that.
ShadesOfGrey [9:11 AM]: lol
Euroranger [9:12 AM]: ‘Course knowing him the fucking toy would end up saying “The cat says “No hablo gato, bendejo”.
ShadesOfGrey [9:12 AM]: roflol
Euroranger [9:13 AM]: I mean swap out the application.cfc wholesale and slap it on another site and expect it to work…and then not even fucking test it?
Euroranger [9:13 AM]: WTF?
ShadesOfGrey [9:13 AM]: this is the data guy right?
ShadesOfGrey [9:13 AM]: wtf is he doing with the cfc
Euroranger [9:13 AM]: Oh, I didn’t mention he’s equally an expert at CF?   Yeah, I musta left that out.
ShadesOfGrey [9:13 AM]: f me
Euroranger [9:13 AM]: No.
Euroranger [9:13 AM]: F me.

As you can see, my tenure with my current employer is destined to be equal mixes of work, inspired design, bug fixing, astonishment, volcanic rage, heavy drinking, inventive profanity, research into the Voodoo arts, homicidal ideation and begging for the sweet, sweet embrace of death from a God who obviously hates me.

…and it’s only 10:11 AM.  I’m going to get an early start and start hating today…right now.

My name is Euroranger and I approved this message.

Posted in Amusing, Errata, Web Dev | 2 Comments »

A name change is now in order

Posted by Euroranger on August 31, 2009


So, I decided not to post a part 2 to the last post Part 1 of the healthcare debacle.  Suffice to say the salient points are arcane, totally relevant but probably too subtle and requiring of IQ for the average Joe to bother applying oneself to.  The bullet points and accompanying graphical aid explain it pretty thoroughly tho:

A well thought out plan by the government?  Really?

A well thought out plan by the government? Really?

  • It’s expensive
  • It’ll kill a fair chunk of our economy
  • It’s very expensive
  • It’ll be even more expensive than claimed now because, hey, this is the fucking government we’re talking about here
  • It’s way too expensive
  • The president, the Congress and their families won’t be required to participate (really makes you think it’ll be GREAT, huh?)
  • Holy fook, do you have any idea how expensive this will be?
  • It imposes a penalty equal to 8% of their payroll on small businesses that can’t afford to pay for a health plan.  So, they pay for it…or they get penalized for it.  The same small businesses that employ 3 out of 4 people in the country…yeah, those shiftless bastards
  • Good God, the cost!  We could give that money to the military and they could buy what…4…maybe 5 new hammers!
  • Oh…nearly forgot.  Union members who have existing health plans…yeah, they can decide to opt out.  But just union employees…you know, the ones the Democrats want make sure vote Democrat next time around because they KNOW the plan the rest of us get saddled with will suck on a cosmic scale
  • It’s expensive

That’s pretty much it for healthcare.  The government can’t run any program without massive incompetence, enormous cost overruns and Congress can’t help stealing from any funds set up to pay for such things (see: Medicare trust fund borrowing vs. imminent Medicare insolvency).  Yeah, if this boondoggle passes in its current form, we’re all fucked.

————————————————————————————-

But hey, enough of that, right?  Let me share some of the reason why this post was so late.  You see I’m a worker bee.  I have a full time job as an application developer.  I also have a side project that could, if it actually paid, be a full time job.  I also do contract work when I can get it.  In short, I work…a lot sometimes.  Sometimes not so much but other times, this past week for instance, I worked my ass off and, as such, I had no time left to spew on this site.

For my day job, I recently took a position with a startup one state over.  In fact, I’m employee #1 of this company.  This is not all that bad.  The hours tend to suck, the benefits are pretty much a joke but I do have a pretty large say in what goes on and how things get built…and that’s kinda nice.  My boss, however, while a decent guy, is a hustler.  That is to say, he’s one of those guys who talks the lingo, rubs elbows with people, has power lunches and so forth.  What he is not, however, is technically astute at least in the arena his new business is in: internet application services.

Normally, this isn’t all that bad.  I can work around impediments like that as long as I’m given the freedom to do so.  I actually have a track record of building apps that, at least, get the company off the ground and making enough money to hire REAL professionals who come in and tell the boss how awful a job I did and how THEY will fix all my miserable efforts and make the company a true success.  This is a proven formula for me…the bastards.

Well, let’s get to my meandering point, shall we?  The aforementioned boss up and decided to hire another employee a week ago this past Friday.  No mention to me about the need for another body.  No request for input…just, “hey, meet the new guy”.  This should be viewed as a good thing, right?  I mean, it’s still just one app being built but now there are two sets of hands to build it.  I should be getting some relief right?

Perhaps you noticed that I changed the title of this blog from WWED (What Would Euroranger Do) to G.H.E.Y. IN H.D. (God Hates Euroranger, Yes INdeed He Does).  These two seemingly disparate topics are actually inextricably intertwined.

My new nemesis

Our new savior

You see, the primary reason we hired the new fellow was that he was supposed to represent a level of expertise in database management/knowledge/leetness that I admit I do not possess.  I am functionally competent working with MySQL (the database product we use) but in no way would my humility ever permit me to claim a level of expertise with it anywhere above “random scribbler”.

The new guy showed me that not everyone subscribes to my truth-based approach to employment applications or resumes.  Enter the part where God evidently hates me.

So, the boss introduces this self-proclaimed prodigy of database omniscience as our new MySQL expert.  I express gratitude for this move as it should relieve some of the burden I was responsible for prior to that fateful Friday.  New guy and I are left alone as boss goes to do more hustling.  I am, however, hip deep in alligators trying to solve code issues on the fly for our first (and so far only) customer.  One of the issues required that I run a very simple, basic MySQL query to pull the last 10 records so I can see a sample of what’s in this particular database table.  The way to do this in MySQL look like this:

SELECT * FROM someRandomTableName LIMIT 10

One thing that those who are blessed to not have to know things like this should be apprised of: each database (MySQL, Oracle, dBase, SQL Server, Informix, etc) uses variations of the same database query language known as SQL.  SQL for MySQL differs from the SQL for Oracle, dBase and so on.  Knowing the particular quirks/nuances of the SQL for a particular database is one aspect that allows you to claim guru-ship with that particular product.  A very small, beginner level aspect to be sure.  Anyway, “new guy” (I may gin up a moniker for him before too long) is leaning over my shoulder watching me type out that code line above when he says something like: “That won’t work.  Instead of Limit 10, try SELECT TOP 10”.  I say, thinking he must be confused: “This is MySQL…that won’t work” and I think I’m being polite and correcting “new guy” on his first day on what could be a confusing job.  No such luck.  No, “New Guy” (capitalized now…although prolly not his permanent moniker) insists that I am mistaken and reminds me HE knows what he’s talking about.

How often does this happen to you?  I’m no MySQL guru but I know in my gut that I’m 105% right about this.  But, I was raised right and, I change my code line and run it.  Guess what………it doesn’t work.  Without comment, I replace it with my original code and move on.  New Guy doesn’t say shit.  Not “oops, my bad” or “gee, you were right”.  Not a word.

My brain’s warning klaxon starts to power up.

Later that same day, New Guy asks what I use to access MySQL with.  I reply that I use TOAD, a common, open source, MySQL database app.  His responding facial expression tells me he’s never heard of TOAD (not a sin) but that he uses SQL Server Management Studio and asks if I’ve heard of it (a huge sin…in fact, it would qualify as the 8th deadly sin in this scenario).  I slowly point out that I’ve heard of it, use it quite regularly for my own projects but that it’s solely for working with Microsoft’s SQL Server database product and not MySQL.  He replies that “he uses it all the time for MySQL work”.  Again, those of you who know better can spot this as an obvious piece of tauren fecal matter (bullshit) as long as by “piece” you understand me to mean “an incredibly large truckload”.  It was at this moment that I began to suspect that New Guy had somehow secured a position as “resident MySQL expert” through possibly fraudulent claims of capability.

The brain klaxon increases volume to “2” and calls in the second shift a little early as it appears it might be going for awhile.

Later that evening, I head home (the next state over) as my assignment at the client’s site has concluded and I fervently hope that New Guy’s apparent inability to do anything, even the most basic of things, correct in MySQL is a passing phase and that come Monday he will shake off his day 1 stupidity and really shine.

That’s the end of this post.  However, as a bit of foreshadowing, I can tell you that the next post will extol the wisdom of my changing the name of this blog to God Hates Euroranger…as it has much to do with the week 1 experiences with me and New Guy Dumbass.

Yeah, I finally settled on a name for him (more foreshadowing).

My name is Euroranger and I approved this message.

Posted in Web Dev | Leave a Comment »