Friday, May 25, 2007

Hatred

If you work in sales, I already don't like you.
If you work in sales for $MegaCorp, go die.


Sales: $OurBigApp can do it all!
Customer: What about $Function?
Sales: Sure thing. Just sign here.
Customer: But does it also do $FunctionWeDon'tSupport
Sales: Abso-toodly-lutely. Just sign here.
Customer: We also want to use $OlderYourBigApp version since it's mature.
Sales: No problem. Just sign here.
Customer: And it'll do everything that $NewestVersionOfOurBigApp does?
Sales: 10-4, good buddy! Just sign here.
Customer: We want to install it on $UnsupportedOS
Sales: No problem. Just sign here.
Customer: And we want to use Citrix.
Sales: No problem. Just sign here.
Customer: And we want to use our old hardware which can barely run Windows 98.
Sales: No problem. Just sign here.

Some days pass.

Customer: We have a problem!
Manager: We have a problem!
Übermanager: We have a problem!
Chief manager: We have a problem!
My manager: REC, you have a problem.


REC: It won't work.
My manager: It has to.
REC: It can't.
My manager: It has to.
REC: Impossible.
My manager: Figure out a way.
REC: Send them to $$$CUSTOM_PROGRAMMING$$$
Übermanager: Can't. It's political.
My manager: This one's all yours. Enjoy your weekend.

Labels:

0 non-"17"s have already commented. Click here and be the next.
links to this post

Thursday, May 24, 2007

Pests

Today we received what has to be the most fuckwitted ticket we've ever received. EVAR. It puts all the screenshot people to shame. It's a special kind of fuckwittery which is in a class by itself. And it's mine.

I have experienced something worse than the fuckwits who sully my workplace, waste my bits, force me to wear out keyboard after keyboard and who have caused me to create a dent in my dense laminate desk in front of the keyboard. If you've read the Bee Guy's site, you know that the accidental importation of a pest can be absolutely devastating. In their natural habitat they can be controlled but in a new environment they can wreak havoc. So it is with Varroa in North America, so it is with cane toads in Australia, so it is with Guidos in Germany. Glub help us, they've arrived.

The ride to Regensburg is normally a fairly pleasant 90 minutes across the middle Bavarian hills. Due to the number of passengers, Deutsche Bahn normally uses double-decker carriages but on the weekends, it's usually the old-style cars. The new seats are impossible to lie across and generally uncomfortable thanks to their brilliant ergonomic design. It's loud in the area between where the carriages join, and there you might find a toilet.

In the carriage behind me sat the three children, the oldest maybe 16, the youngest still waiting for his growth spurt. I recognised the look immediately, chuckled, shook my head and went back to the sudoku puzzle. You see, in Germany everyone tries to find some niche, some way of standing out and drawing attention. Within a month of the German release of Boogie Nights there was some blonde ditz sporting rollerblades, calling herself "roller girl" and making the talk show rounds. No, she didn't do porn films nor would she even though so many celebrities here have done so to get their fame. Gina Wild, Dolly Buster, and a whole host of others whose names don't mean shit outside this here Reich.

If it's in any way different -- a look, a style, an activity -- as sure as shit stinks some Germans will do it. The Guido look appealed to these little twits. Fine. Hell, the guidos in NYC get laid (if they can get it up after all that coke) so maybe it'll work here. Plus it's a new look: baggy, flappy clothes, custom-ripped stuff, "bling", shaved eyebrows, kid stuff.

And had the trio just copied the look it would've been fine. But they didn't just copy the look. They had to be authentic, and that means "annoying". They'd traipse like little girls together to the bathroom which honestly is so small that obese passengers can't get in at all, so one would have to wait outside. Then they'd head back to their seats. To get between points A and B they'd open the door by me AND WE WOULD ALL BE DEAFENED UNTIL IT CLOSED and then open the door at the other end of the carriage SO THAT IT GOT EVEN LOUDER and after a couple minutes, they'd do this in reverse.

These girls needed to go back to the bathroom every 10 minutes. After a few times one of them decided what he really needed to do while waiting for the other two was to stand in the doorway and block the door SO THAT IT STAYED REALLY LOUD. As they walked back to their seats, the stench of cheap cologne wafted through the carriage. They were dripping in cologne, hair gel and eyebrow wax. That shit's like this decade's jheri curl for whitey.

When they held the door open again I asked the little douchebag to let it close but he couldn't hear me. So I tapped him on the shoulder and repeated my request, even the "please". The kid screamed something at me but then moved away. A minute later as he came back through with his friends, the oldest one started shouting at me. Along with the shouting came the threats of physical violence and he was posturing real pretty.

My first instinct is to remove the threat. I was in a confined space, had one shitball to my side and another in front. What I'd have to do would be a quick jab to my left followed by a reach to pull the biggest one into a sleeper hold. But this is Germany. Even if the kid hits me first I can't hit him back unless my life is in danger. You can go to jail defending yourself.

The stupid look, the eyebrow wax, the cologne, the pugilistic attitude, the irresponsibility, the overall senselessness has come to Germany, and unlike NYC we're ill-equipped to deal with it. A preemptive strike would've changed their attitudes quickly. Were I in the US I could've done so in most states having been threatened, especially since a controlling hold isn't seen in the same way punching a guy's lights out is. We also have this air of social acceptance. I'm all for laissez faire as long as the fuckers aren't causing me any problems. But here you're supposed to be "tolerant"; you must show respect even for those who themselves show none.

With luck this'll die out quickly and the little shits will be mocked. That's actually quite likely. But since Guidos come from NYC and hang out in clubs and, as I mentioned before, seem to get some play, it may grow, and if it does, I'll be looking for a new place to live. Norway perhaps; the Finnish language is bloody difficult to learn.

And the other idiots?

Our Customer has built an external website with $YourBigApp through which they want to sell their products – mostly $SpecialtyProduct to their customers. Unfortunately, their built-with-$YourBigApp website seems to return very low ranks by external web engines and web crawlers like the ones from google. If a customer in Belgium types in the keyword $SpezielProdukt" (Dutch for $SpecialtyProduct), it is difficult to find the customer website back in the result list. Obviously, if the customer adds $CustomerName to the keyword list, this is OK, but then the customer would be knowing that $Customer is actually selling $SpecialtyProduct (which they mostly do not).

Because of the fact that their built-with-$YourBigApp website scores bad with web engines in promoting and selling their products, the customer starts questionning whether $YourBigApp was the correct product to actually build their customer facing website with. This issue is becoming very political

Consequently, we need to give them our best possible advice of what advice, methods, tips, tricks are to improve the ranking of their built-with-$YourBigApp website by web engines and web crawlers. This issue is becoming very urgent.

Thanks a lot in advance!

My answer:

Dear Fuckwit,

If you don't know how to bake a cake do you blame Pillsbury for their shitty flour?

Go die,
REC

OK, wishful thinking. I sent 'em a couple links to search engine info as well as to that Slashdot story from a few weeks ago.

This ticket has to convince Internal Apps Development to implement my Root Cause: 17-Fuckwit. I don't know what else to close this out with. "7-Not an issue"? "12-No research"? I have to pick something and for the life of me I have no idea which root cause to choose. Only a 17 fits.

x-posted to HuSi.

Labels: , ,

0 non-"17"s have already commented. Click here and be the next.
links to this post

Wednesday, May 23, 2007

Screenshots, Part Duh

My attempts to sleep last night were constantly interrupted by the sound of V1 attacks caused by the almost futile attempts of someone who shares the bed with me to continue being able to breathe. I'm feeling some effects but it's not quite the hell I'd expected.

The building is taking care of that, though. It's getting too hot to think in here in $MegaCorp's giant greenhouse, and being on the sunny side doesn't help. Why don't I move to the dark wing? Ripa sits there.

ATTENTION HELP-SEEKING INFIDELS:
When I send you an explicit command to be run, follow my directions.

"Open a command window (Start: Run: cmd) and execute the following statement:
dir c:\windows\fonts >> fonts.txt

How difficult is that?

Quite, apparently. I knew there was a problem yesterday when I saw the size of the file they sent back. We all know how bloated Microsoft Word files can be, but the text listing of a couple hundred fonts can hardly bulk up a doc file to 2MB.















Screenshots. Of the fonts directory. With icons displayed rather than details.

This one's both not quite as bad as the last time and at the same time worse. The pictures were at least somewhat legible and certainly a more managable size, but they give me absolutely no information whatsoever about the fonts. Nothing. Names are cut off and there's no indication of file sizes.

I managed to convince them that I actually needed a text listing and asked them again to please run the command as I'd asked before. What was waiting for me when I got in today? Another doc file, but at 30K, it's possible they did what I'd asked.











The font I need information on is Batang which sounds remarkably similar to the noise my head makes as I thump it repeatedly into that spot in front of my keyboard.

x-posted from HuSi, where there's an important beef poll

Labels: , ,

0 non-"17"s have already commented. Click here and be the next.
links to this post

Tuesday, May 22, 2007

No Narrow Escape

There are a few benefits to not being single, physical comforts ranking rather high among them. There are also the downsides, and her shitty immune system is one of them. At this time tomorrow I expect to be laying there feeling like death and unable to breathe, much like she was this morning when I left for the office. This is not the sort of time off work I look forward to, and almost as bad as feeling sick as a dog is knowing that within the next 12 hours that's how I'm going to feel.

I wouldn't have come in today but for a couple conf calls which are simply easier to do when I have three work computers in front of me and I don't have to access virtual servers through a VPN. Connecting through the VPN at home on my personal boxen would kill some of those torrents as well as my FTP server. $MegaCorp blocks everything.

Everything except fuckwits.

we are currently use version 3.4.g, we have installed new server where are 9 languages, we have an issue with JPN. JPN server comes up , but all the screen Names are showing up as ??? marks however the data in the data bse shows up in Japaneese language

we checked all the components and check files and it shows all the latest pacthes has been applied as below

please adivce on this issue

A glance at the screenshots tells me all I need to know. Where characters should be are boxes. Incompatible, non-compliant font. They never modified the templates to use "Arial Unicode MS". I sent him easy-to-follow instructions. It's nothing but search and replace in a few text files.

We see your answer and making changes to all template file but see screenshot we are still have problem. We need solution because this is wrong with not seeing the texts.
That's unpossible. There's only one thing that causes boxes to be displayed instead of characters: the wrong font. Either they don't have a font which can display the character (also unpossible since they're using a native Japanese OS) or they specified the wrong font. That's it. There are no other possibilities. If you see boxes instead of characters, you have one of these two simple font problems. Clearly search for 'Arial' and replace ALL with 'Arial Unicode MS' wasn't complicated enough for them and therefore couldn't possibly be the solution, and I'm betting they got clever.

All I need is the font directory listing and templates. Nothing else unless they did something seriously fucknutted like changing the font substitution list in the registry. Still, they've already shown themselves to be thoroughly incapable of following simple instructions so it's time to put them to work and add eggs and milk. Along with what I actually needed I got server logs, screenshots, a registry export (just in case), a database extract... all in all about 600MB, of which I actually needed less than 14KB.

And it was right there.

{ font-family: ‚l‚r ‚oƒSƒVƒbƒN, Arial Narrow,Helvetica,Sans-Serif; font-size: 8pt; }

Mangled thanks to their editing it in fucking Notepad and saving it as an ANSI text file rather than Unicode. I recognised the mangled bit quickly: a Japanese font. Still, I had to unmangle it before I could properly chew them out.

Step 1: Open the file with a hex editor:
0000008bh: 2D 66 61 6D 69 6C 79 3A 20 82 6C 82 72 20 82 6F ; -family: ‚l‚r ‚o
0000009bh: 83 53 83 56 83 62 83 4E 2C ; ƒSƒVƒbƒN,

Step 2: Remove familiar and unnecessary crap which served to delimit the mangled garbage:
82 6C 82 72 20 82 6F = ‚l‚r ‚o
83 53 83 56 83 62 83 4E = ƒSƒVƒbƒN

Step 3: String the useful hex together:
82 6C 82 72 20 82 6F 83 53 83 56 83 62 83 4E

Step 4: Guess which encoding they're using
For Japanese, it's usually going to be Shift-JIS or Unicode. If it was the latter you'd see high bytes in the $30s, $40s, $50. These are all in the $80s which screams "Microsoft codepage 932: Shift-JIS"

Step 5: String bytes pairs together and hope your endianness is correct:
826C 8272 20 826F 8353 8356 8362 834E

Hmm... there's a space in there. I'm thinking this will be "MS Mincho" or "MS Gothic", typed by some halfwit in half-width.

Step 5: Character look-up:
At least Microsoft is helpful with I18N issues. They have a neat chart for codepage 932. First byte takes me to plane 82, position 6C: an "M", but not a standard ASCII "M". That would've made sense. No, this is a Japanese "Fullwidth Latin capital letter M" which has little in common with a normal 0x4D ASCII M. An "S" comes six positions later and I can count well enough in hex that I don't need to look up the second byte.

Then there's that "20", a space. Which fucktard out there decided computer font names should have spaces?

Working through it all I ended up with "MS Pゴシック", the "Gothic" font I expected. And right behind it, "Arial Narrow". Why? Because, well... maybe because Japanese people have some weird halfwidth font fetish.

I thought about the time I'd spent on this ticket so far and how much more time I was likely to have to waste in explaining to them what they needed to do, namely, use the right fucking font, stop adding wrong ones, and save text files in the correct code page.

Dear Sparky-san,

Please zip up and send me ALL of the HTML and CSS files from $Our$Big$App for analysis.

Love,
REC

"For analysis" prevents questions.

Two days later they sent what I'd asked for. I fixed the dozen or so files which specified fonts inside 10 minutes. And as I finish writing this I'm confronted with the fuckwitted subject of tomorrow's entry if I manage to get out of bed. ファクヰト everywhere. ルウトコズ:十七
x-posted from HuSi, where there's a pointless poll.

Labels: , , , , ,

0 non-"17"s have already commented. Click here and be the next.
links to this post

Friday, May 18, 2007

Solving Greater Than Sudoku Puzzles

I'm in a surprisingly good mood. Not only has the the idiocy:competency ratio been fairly low this past week, I've resolved a couple difficult problems. Then there's Citrix, and even that front is looking up. Best of all, I'm on a four-day weekend. Unfortunately once I post this there's work on the doghouse to be done involving hammers, drills, anchors and heavy, unwieldy objects.

EDIT: Sorry about the crappy formatting. Blogger, dontchaknow. It looks good in Preview but dies in Firefox in actual display. I'll see if I can't make it look nicer.

Ever since my post about solving difficult sudoku puzzles with my uniqueness method sudoku searches in the the referrer logs have jumped considerably and are about 20% of all hits now, many of them looking for help solving "greater than sudoku" puzzles. I couldn't find any help myself when I first tackled them but I've gotten pretty good. Here now a primer for solving "greater than sudoku" puzzles.

If you want to play along, the puzzle which will be solved is Greater Than #374, a medium level puzzle from Killer Sudokuo Oline. Go print it out. I'll wait.

Warning: this entry is long and contains around a meg of ~20KB GIFs

Note the key for referring to blocks and numbers:





















Greater Than Sudoku Puzzle #374

















Greater Than sudoku puzzles only show the relation between the numbers. Therefore the only way to begin solving them is to start with the limits, 1 and 9.



Here we start by looking for the 1s which have to be the lowest boxes. In the block A we have two candidate squares 2 and 7 which are smaller than all their neighbours.


















Working our way down the column we find three candidates in the block D and only one in block G.















Every square except 5 in block G is larger than something else so there's one possible square which can have a value of 1: G5.
















With this 1 in place, the rules of sudoku say that no other square in this one's row or column can have the same value.
















The 1 in G5 negates the candidate 1 in square A2, leaving only A7 to hold a 1 for that block

















The known 1 in square A7 means that the candidate in D4 must be invalid since they share a row. that leaves D3 as the 1. Moving on to the middle column, we mark all possible candidates for the 1 again.














With only 1 candidate in block B (B4), we take out the two candidates in that fourth column, and D3 negates another candidate in the fourth row, leaving only 1 possible position for both block B and E. Block F still has two remaining.














We'll leave those two blocks and move on.


















Sudoku rules force the 1 in block C to be in the top row and only C2 is smaller than any other cell in that row. Likewise, only the bottom row of block F can contain a 1 and the smallest square there is F9.














These 1s in blocks C and F force the 1 to be in the left column of block J, and the 1 in G5 means it can only be the upper or lower square, just as in block H















Since only one of those squares in J was smaller than all others, J7 it is, forcing block H to H3.

















Right. The 1s are done. Now for the 9s. For no particular reason I'll mark the candidates across the top row. The 9s ,ust by definition have the largest value. If any square is larger than a candidate, that candidate can't be a 9.

There are only two candidates in block A, both along the top. These negate the candidates in B3 and C3, leaving only one possible choice in each.















Working down the left column we get stuck with D2 and D7 matching G2 and G7. Not much help.

















In the middle column we have three potential candidates but B5 negates candidate E8, leaving only E4 and E6. Continuing to check, mark candidates and remove them based on sudoku rules, we're left with only one candidate 9 in each block.














So we fill them in.


















Now it's time to do either 2s or 8s. Since all the 1s and 9s are filled in, it doesn't matter much which one we go after first. However, 2 is more absolute than 8 since it can only be larger than 1 and is therefore the smallest number to deal with, whereas 8 tends to be more ambiguous, being smaller than 9 but larger than everything else.












In block A it looks like there are three candidates for the next smallest number, A2, A4 and A8. However, while A4 is smaller than all surrounding squares other than 1, A8 is larger than A5. Since 2 can't be larger than anything else, A8 is nixed.













We see the same thing in block D that we saw in block A: D6 has to be larger than something other than 1 so it's disqualified as a 2.
















Since there are only two complimentary candidates in blocks A and D, only the right row of block G can contain a 2 and it has to be the smallest one, G6.















Working through the same strategy we mark all the possible candidate 2s across the board.

















We can remove some of these easily. Only the left column of block B contains the possible candidates so E7 is cancelled, leaving candidates only in its right column. This forces out candidate H9 leaving only H2. That, in turn, negates J2 leaving J8.













Up top we have complementary candidates in blocks B and C. Since there's no 2 in the middle row of either of these blocks, there must be one in block A.















Once we have A4, all the rest of the wrong candidates can be weeded out. It's time to go to town on the 8s.
















Working through all the boxes with the same strategies of complementary candidates, we find all the 8s easily.
















The 3s aren't quite as easy,


















We're in luck: block J only has one candidate: J2. This allows us to wipe out most of the other candidates.
















A couple people I showed this to were stuck here. It can be easy to overlook the fact that in block E only the bottom row has candidates, negating D9. That makes D4 a 3 and negates G4, forcing G9, which then forces H4 and finally E9.














Next up: 7s. Seeing a pattern here?


















Sevens are now the largest number we can have. Nothing (except the already-positioned) 8s and 9s can be greater than it. The top row has only one candidate in block C which then gives us blocks A and B.














Same-old, same-old. Block G was the key with the 7 in G1, negating D1 and forcing D5, and so on.
















7s done. Now it gets a bit tricky. The remaining cells can only be 4, 5 or 6.

















As we start filling in 4/5/6 in each cell, the relationships come into play. In block A, A1 could be any of the three since even 4 is greater than both 3 and 1. Squares A5 and A8 are directly related; one of them must be greater than the other. Therefore A5 can only be 4 or 5 since we have nothing greater than a 6 to fill in that square, and A8 can't be a 4 since it would have to be greater than a number other than 1, 2 or 3.


This is the same reasoning that reduced the possibilities in block B. Block C is special. One of the three candidate squares must be greater than both the others. It can only be a 6.




That leaves only 4 and 5 as possible values both within that block and also in that column.

















Since there are only two candidate squares for a 6 remaining in block J and they have a relationship, we know where the 6 has to go.
















Standard sudoku rules say that since we now have the complementary pair of 4/5 in J1 and J3, that row can't have either of those numbers elsewhere.















G3 is a 6.


















This blocks out the right column of block D.


















D1 is a 6.


















Since there's a 6 nailed down in the leftmost column, the 6 in A1 is void.

















Same standard progression. Only A8 can be a 6 so B9 can't be, forcing B2. Since no more dominoes will fall at this point, we need to look where the rest of the 6s could be placed.















The 6 in D1 takes out the top row for the middle row of blocks, leaving only two candidates in block F with a clear relationship. The rest of the 6s can now be placed.















The rest of the 6s are placed and there's only 4 and 5 to contend with. In almost every block they're dissociated, except in D where they have a relationship.















That greater than sign forces the 5 into D6 and the 4 into D9.

















Now that we've got one 4 and 5, the rest should fall into place.


















Finito.















That's pretty much how all the "Greater Than" sudokus work. At higher levels there are more open candidates, and techniques learned from normal, extremely difficult sudokus (like uniqueness) are required, but that's it in a nutshell. This was a "Moderate" puzzle. If there's a demand I can do this for a difficult one, minus a lot of the baby steps.


Graphics done with paint.net which was only mildly infuriating at times.
Preparing this for blogger with the tiny edit window was the real pain.

Labels:

5 non-"17"s have already commented. Click here and be the next.
links to this post

Friday, May 11, 2007

I Never Could Get the Hang of Thursdays

There are worse things than Installing software on a virtual environment. For example, installing software on a virtual server which is 10,000 miles away and has ping times of around 200ms. And that's not so bad when compared to having to do that install via a secondary virtualisation through something like VLC.

At 7pm I should have a bottle of vodka in my paws. I had two mice.
At 9pm I should have a bottle of vodka in my paws. I had two mice.
At 11pm I should have a bottle of vodka in my paws. I had two mice.
At 1am I should have an empty bottle of vodka in my paws. I had two mice and a trackball.

I hate Citrix.

The only highlight of the evening was stumbling across Voice of the Hive, an utterly fascinating read which kept me occupied while waiting for Citrix to write some 430,000 Registry entries it seems to need.

I arrived home to find that yet another one of the precious few activities which bring me any sort of joy in life is won't be available for the next couple weeks. She'd been to a dentist and had had to undergo painful surgery on her jaw. The fuck had given her no pain meds, just some ibuprofen. I managed to find one Parkodín tablet, the last scrap of serious pain medication in the Doghouse. Although only 10mg of codeine, it was enough to let her fall asleep.

I switched on my game/PhotoShop computer (mucho memory, high-end video card) to play some GTA:SA and heard a clock ticking. There's no clock in the computer room; it was the game machine's main drive which has a 250g of games, applications, filters and scripts, all of which I get to reinstall this weekend.

x-posted from HuSi, where there's a bee poll.

Labels: , , ,

0 non-"17"s have already commented. Click here and be the next.
links to this post

Thursday, May 10, 2007

No Rest for the ReallyEvil

ATTENTION MY MANAGER INFIDEL:

Have you not noticed that my productivity has dropped by about half since I was transferred to your group? You sure as shit notice all the escalations that are coming in on my tickets. Have you stopped to ask yourself why this might be?

LEAVE ME THE FUCK ALONE AND LET ME GET MY WORK DONE.

Sit your ultramicromanaging ass back down in your comfy chair and get back to writing your useless fucking 12-page management-speak presentations which have less actual content than a 7-year-old's blog and let my do my fucking work!

There is no fucking reason in the world that I need to respond to every fucking mail you send out. There is no fucking reason for you to send 25 mails a day about the same goddamned ticket -- I can't do a fucking thing until the customer WAKES THE FUCK UP, GOES TO HIS FUCKING OFFICE IN OKLAHOMA SEVEN HOURS BEHIND US AND ANSWERS MY LAST FUCKING UPDATE. There is
no fucking reason for you to sit over my shoulder like a fucking vulture, interrupting me while I'm building four different environments using one machine to connect to three slow-in-the-geological-sense virtual servers while at the same time answering a completely different ticket on another computer. There is
no fucking reason that fully half of all my keypresses should go to answering mail you've sent me.

No. Fucking. Reason. in the world.

Stop it. These constant interruptions -- along with two "meetings" a day to chew me out for my lack of responsiveness which "we" talked about in the previous "meeting" -- only serve to send me in a downward spiral from which I can't escape unless I stop taking any tickets whatsoever, because while you're busy chewing me out and then sending me two dozen mails asking me "where we stand" with each customer I'm dealing with, I'm not actually DEALING with them. Why can't you understand this?!

Leave me the fuck alone! Go to your office, stay away from the CubeDesk of Hate, and watch customer satisfaction once again soar. Or don't, and watch our people drown in the additional load that I'm not taking.

Now, back to the fucking Citrix install. Yes, Citrix. I'm turning to the Even Darker Side. I have my reasons.

x-posted from HuSi, where there's a poll

Labels:

1 non-"17"s have already commented. Click here and be the next.
links to this post

Wednesday, May 09, 2007

Empowerment

I got into the office to see $BigFoods had filed a Prio-1 ticket. One of their idiot users managed to delete the root admin. Now while you can't delete Charlie Root in UNIX & Linux, we're dealing with a database. An administrator with write privileges can delete any damned thing he wants. Restoring this isn't easy but can be done. I know it can be done because at least once a month some company sends in a Prio-1 ticket because this has happened.

Who the fuck gives root database and application admin access to goddamned call center monkeys? $BigFoods does. And why? I almost fell out of my chair when I read the response.

##

I sent the guy my standard response about how to fix the problem. There is one way which doesn't work:

1) Recreate the administrator user

This can't work for much the same reason that you don't rename root in operating systems from California and Finland so that you can have a normal user named root.

There are two ways which do work:
1) Restore from back-up.
2) Follow complicated process dependent on ensuring that our rules about base tables data weren't broken

The second option is the better of the two. Unfortunately few ever follow our demands to leave the fucking base tables and data the fuck alone. They'll add extension columns, new rows, triggers, whatever they can think of. They'll base intersection tables on certain variable positions of those base tables. They're idiots. I can't make up the shit they do because no one in his right mind would ever think to do such a thing. Who the help puts an index on the primary key column, stores that to a M:M table, then uses that table for keyed searches? (Answer: Roberto from $CarCorp.)

So the first one is usually the better choice. In order to prevent the loss of work since the last back-up (circa 1998), we also tell them they can edit redo logs to remove the deletions and then apply.

Nope. "Our DBA is away and our back-up DBA isn't sure about working with redo logs. We need you to assist us."

The database is sitting on AIX. I can't connect to do any sort of teleconferencing so that I can actually see what's going on and I'd have to talk my way through this with a DBA who can probably find his ass with both hands in a best of three. It woulda been a case of the blind leading the fuckwitted. As I was trying to figure out how to say this in reply which wouldn't get my manager's attention I got a follow-up response.

Hi REC,

we restored successfully the DB until the Time point before the users deletion. now the environment is up running. We had to full restore because the user deleted many more people.

I just stared at the screen. There are about 12,000 seats at this place and one of those fuckwit ell-users deleted the admin and then a load of other users? I couldn't let it go. I had to ask.

Joe,

I'm glad the system is back up and running. I strongly advise you find out why this user had admin rights and remove them. Your administrator should also evaluate the security permissions and settings for all users, both within the application and at the database level.

Love,
REC


Ask a stupid question...

"All users have administrative access. After an employee survey and discussion groups, the consultants explained that employee morale was being hampered by the previous heavy lock-down on the system. We agreed to conditionally lift the lock-down conditional on employee productivity remaining at or above the previous level. Productivity has in fact increased some 10% over the past six months."

Uh-huh... right up until one of those monkeys deleted the fucking administrator and half his cow-orkers, costing you a few hours' data across the entire center.

I'll bet those lost 10,000 man-hours or so still didn't cost you as much as what those "consultants" reamed you for. Root access for phone operator and data-entry monkeys so that they feel empowered? Root Cause: 17-Fuckwit.

I wonder if I could get them to pay me to come in and feng shui their server room.

x-posted from HuSi where there's a cartoon babe poll.

Labels: , ,

0 non-"17"s have already commented. Click here and be the next.
links to this post

Monday, May 07, 2007

We Don't Serve Off Menu

Way back when this dog first started earning income working a "proper" job (which paid about a tenth of what I also earned with my own business but which was supposedly good for building character), I became a quasi-manager of a certain fast food chain in an early attempt to climb the corporate ladder. It was good to be able to tell someone else to go fetch another 36-pound box of fries from the freezer downstairs instead of having to do it myself, and being able to give my girlfriend the shifts she wanted doing at the position she wanted certainly had its benefits.

But with authority comes responsibility, and Saturday night shifts sucked ass especially since the drunks would start arriving by 10pm and the flow continued all the way through 1:00a.m. when local bars closed and we did, too. This was back in the days when drunk driving was only just starting to be handled martially. Generally if a cop stopped your drunk ass, he'd be friendly, tell you to slow it down a bit and be careful.

Every Saturday night without fail I'd have to deal with fuckwits. Fuckwits like the drunk who demanded we make him a steak. At McQueenBurgerz.

REC: "We don't have steak."
Drunk: "Yes you do! You have to have beef to make the burgers!"
REC: "The burgers come already ground and formed."
Drunk: "So you don't grind the meat?"
REC: "No."
Drunk: "But you have ground beef, right?"
REC: "Ground, formed into burgers and frozen."
Drunk: "Well then I'll take meatloaf."
REC: "We don't have that either, sir."
Drunk: "But you said you have ground beef!"
REC: "Ground beef for hamburgers, already formed into hamburgers."
Drunk: "So thaw some out and then you can make meatloaf."
REC: "We can't make meatloaf, sir."
Drunk: "Sure you can! You got eggs for breakfast and ground beef. All you need is some bread crumbs."
REC: "We don't have any breadcrumbs, sir."
Drunk: "You have buns! You could make breadcrumbs from that!"
REC: "No we can't, sir. Everything we can serve is on the menu."

I pointed up. He looked up.

Drunk: "OK, if you won't give me the meatloaf I'll take the fish."
REC: "OK, one Fishy Fillay Sammich."
Drunk: "No, I don't want that sandwich. If I can't have a steak I want grilled fish."
REC: "I can't grill the fish, sir."
Drunk: "Sure you can! Instead of breading the fish just put it on the grill!"
REC: "The fish is already cut into filets, breaded and frozen."
Drunk: "Then take the breading off!"
REC: "I can't do that, sir. That's not what we sell."
Drunk: "But it's fish, right?"
REC: "Probably. Came out of the sea, anyway."
Drunk: "Huh?"
REC: "It's a filet, pre-formed, pre-breaded and pre-frozen. I can only fry and sell them as a sandwich."
Drunk: "Well what about a sloppy joe? You could make that with just some ketchup and burger meat."
REC: "We don't sell sloppy joes, sir. Only the items on the menu."

He looked up again.

This went on for a good 10 minutes and the guy was being serious. He wasn't asking for Coq au vin or Boeuf Bourguignon; he just wanted something that simply wasn't on the menu. I put up with it the whole time because it was so damned absurd that crew and customers alike were enjoying the show. Well, that and I thought that maybe the head manager sent this nutter in to test me. In the end the guy decided what he really, truly, absolutely had to have if he couldn't have steak was fried chicken. Which we didn't have. The Gino's next door did and I courteously directed him there. I was friends with the manager there; he didn't speak to me for a week.

I think the guy's working for $BigGameCo these days.
On page C-18, it talks about cluster solutions, and hp. The supported software is $ClusterPack. We use Veritas Cluster, on HP unix is this not supported?
No, it's not supported. If it's not listed in the Supported Systems Manual (SSM), it's not supported. If you want to use Veritas you do so at your own risk.

Root Cause 6-No research. I set the ticket information fields knowing this question had been answered. And that should've been that.

You said Veritas isn't supported but it's not listed in the SSM so how can you say it's not supported? Please confirm that it's supported since the SSM doesn't mention it.

The fucking SSM is called the "Supported Systems Manual" because it only lists what we support. If it ain't in there, we don't support it. We have no "Unsupported Systems Manual"; it would be impossible to list every fucking piece of software out there that we don't support. If you use Veritas, you do so at your own risk. Any problems and you need to contact them, not us.

I sent the answer out and refreshed the ticket a few times on the off-chance someone had finally added my Root Cause-17 Fuckwit to the drop-down list of causes. Not yet.

We think you should support Veritas and also list it or at least explain that it's not listed. Also, I don't even see linux listed under this section. Is clustering on linux not an option?

After smashing my head into the dent in front of my keyboard, I responded quickly and harshly to put this ticket out of my misery:

We don't support clustering on Linux because we don't support Linux for ANY version 3 software. At all. The only supported clustering solution is $ClusterPack, as explained in the SSM. If it's not in the SSM, it's not supported. Goddamn I want to close this fucking ticket.

Also, there's no mention about restrictions for Itanium processors in HP. Is this supported?

The SSM clearly states that version 3 software is only supported on PA-RISC systems. There's no mention of Itanium processors because we don't support them. If it's not in the SSM, it's not supported.

Below you state that you don't support Linux for ANY version 3.x software. I was told that you will support it with version 4c is that correct?

Yes, as it states in the 4c SSM, Linux is supported. Please refer to the SSM for these questions.

I've looked through the new SSM and there's still no word about support for clustering on Linux. Do you support clusters in Linux?

Gino's is no more but there's a KFC just down the street from here.

x-posted from HuSi, with a Scooby Doo poll.

0 non-"17"s have already commented. Click here and be the next.
links to this post

Friday, May 04, 2007

Procastination Nation

Back a few months ago, everyone was scrambling to get Daylight Savings Time patches installed. The patches themselves were buggy but better than nothing. Most companies only had from a few days to a maximum of three months' lead time to get things sorted.

Smart admins aren't in any rush to install the latest and greatest software. It took over a year and a Service Pack before companies even started rolling out XP to desktops. Due to the nature of our software and the testing required before roll-out (as well as the regulations which govern many of our customers), we might release three more patches before any company rolls out the earlier one. Patches rarely have deadlines. Fixes often do.
Help! We have an issue where 3000 users are unable to log in to the $YourBigApp as highlighted in Notice NSA-740.

We implemented the workaround supplied:
Use the Active Directory Group Policy Editor to set the MaxPasswordAge policy to a high value such as 999 days. After making this change you may need to force a refresh of the policy.

Bobby had a problem with Single Sign-on functionality. He didn't have time to implement some changes which would allow it to work in his specific environment and one of our monkeys gave him a work-around to buy him some time: modify the Active Directory expiration. Simple, sound, functional. What more could you ask from a monkey?

Today we have reached the 999 day anniversary of the above workaround and our users are not able to log in.

Can you please instruct me on how we can efficiently change all 3000 user accounts WITHOUT implementing workaround 2 which would take a very long time.

Umm... quit surfing the pr0n sites already and do your fucking job?! You had almost three years to fix this, you tard!

Resolution: Make the fix.
Ticket force-closed.
Root Cause: 17-Fuckwit.
x-posted from HuSi, where there's a bottled water poll.

Labels: ,

0 non-"17"s have already commented. Click here and be the next.
links to this post

Thursday, May 03, 2007

Dante was an Optimist

Yesterday's conf call about Citrix didn't quite go as I'd expected. A feeling of dread washed over me at ten last night as I realised that I'll once again have to build a full Citrix environment for testing, completely replacing the feeling of calm which had washed over me as I'd sipped from my glass of frightfully expensive whiskey to pass the time on that call.

The matter is now officially interesting. Fuck.

It's been six months and I am no longer Mini-Me's slavedrivmentor. He's done well, very well in fact. This should reflect well upon me. I say should because I have no delusions: even though I brought a newcomer up to speed faster than anyone ever at $BigCorp, this accomplishment will be all but ignored during my review, barely rating even a mention that I was a mentor. Pula!

This isn't a terribly earth-shattering moment. I haven't been reading his communications for the past few months unless he asked me to. Hell, I've barely been watching the tickets he's been taking because he's been doing a good job, even getting a high score notification from some fuckwit with a problem so simple even Ripa could solve it unassisted inside a month. Probably. Mini-Me had the customer add some milk and eggs, then basically told her the next day that she was an idiot. She was thrilled and gushed her appreciation in the comments section.

Before getting to work on the Dark Side, preparing for another long conf call this evening, I took a look at the queue:
Hi!
In our test environment the one particular log file is very huge and it is still growing. I am aware the we have set the log level to 8. Currently we have only 2 users enabled in our TEST environment and we are not doing any external activities in the application.Would be helpful if you could help us know what might be the reason for this.
She's got logging set to extra-super-maximum verbosity and diagnostics (something which can't be done by accident but which requires multiple steps and confirmations) and doesn't understand why the log file is a smidgen larger than normal? I bet she doesn't understand the "11" joke in This is Spinal Tap either.

Root Cause: 17-Fuckwit.
x-posted from HuSi, where there's a poll.

0 non-"17"s have already commented. Click here and be the next.
links to this post

Wednesday, May 02, 2007

Flinging Poo

ATTENTION MONKEY COLLEAGUE INFIDELS:
When flinging poo, the idea is to throw it outside the cage at the fuckwits and gawkers and not -- repeat, not -- inside your cage, and under no circumstances at your fellow monkeys.

Yesterday was a national holiday (not celebrated, ironically, in its country of origin). Getting a day off only means there'll be that much more shit to deal with once I get back. This time was no exception. The only thing worse than a fuckwit is a clever admin, and $BigInsuranceCo has one.

$BigInsuranceCo has the same problem with Citrix that everyone else does and on Monday submitted a ticket about it despite our Knowledge Base being chock-full of entries from me about this specific subject. In their ticket they also demanded one of us attend a conf call they'd set up with Microsoft and Citrix. Not gonna happen. Not necessary.

I sent 'em the boilerplate that spells everything out: what the problem is, what causes it, how we proved it's purely Citrix, how Citrix admitted fault last year, the works. I included the fact that the Citrix monkeys have all had lobotomies or suffered from mass amnesia and are trying to claim it's us. Again. I even included the original Microsoft and Citrix case numbers. I summarised everything, sent it off, and at around 3:30 went home as I always do on Monday. Everything they need to know is in the ticket. There's no need for a conf call; they can just quote the case number to Citrix which will give them a magic moment of re-enlightenment.

And that should've been the end of it.

At 5:30 came a mail whinging that no one from $MegaCorp had attended the conf call.
At 5:40 came a mail from their Technical Account Rep bitching about the same.
At 6:12 came anothe mail from the TAR demanding an immediate response.
At 8:09 came a demand from the TAR for escalation
At 8:17 came another demand from the TAR for escalation, CC'd up the management chain
At 9:42 came another monkey who proceeded to "help" this mutt
And that was just the start.

As I logged in this morning I quickly found out that over the course of the day, as I sat at home doing very little beyond some experimental cooking, much mail moved back and forth. My blood pressure rocketed ever higher with each communication I read.

In short, the monkey colleague decided to play along with $BigInsuranceCo and start working on the problem, never mind the fact that we don't have Citrix software nor licenses to get it running. Worse still, this monkey had no fucking idea what Citrix actually was and made this painfully clear in mail sent to $BigInsuranceCo who ignored this fact, happy that we were apparently accepting responsibility for the problem. With every response the monkey cage got smellier.

The worst was yet to come: an internal mail to me from the idiot monkey:
Hi REC!

I was asked to assist in your ticket, I think you posting regarding Knowledge Item C-225 Citrix not supported is maybe correct. This issue is not reproducible without Citrix and is really not supported. What are your thoughts?
thanks,
My thoughts? My thoughts are to strangle you until that scrawny chimp neck of yours is the circumference of CAT-5 plenum! If you read what I wrote and think that Citrix is maybe kinda sorta possibly unsupported then why the hell did you start trying to get testing running and asking them for full-on logs and screenshots, you dumb fuck?!

Things only got worse, starting with the coffay running out.

After setting $BigInsuranceCo straight with a very long and further detailed explanation which also quoted my entire testing protocol from last year, I set to work on the next formidable task since I was Duty Monkey today: get all those damned tickets that have nothing to do with us out of our fucking queue. The other Duty Monkeys were also on the ball and there was much passing of tickets and gnashing of teeth.

And more mail from $BigInsuranceCo: they'd managed to reproduce the behaviour without using Citrix or Terminal Services. Impossible. We know what happens and why. We know the cause. It only happens in Citrix. But now my management was all over my sore monkey butt. "It can be reproduced in bog-standard $OurBigApp! Get to work, REC! Escalate!"

They sent repro instructions:
Here are the steps to recreate the issue:

- Logon to a Windows XP SP2 workstation
- Start task manager
- Kill the explorer.exe process
- Use task manager to start iexplore (Internet Explorer browser)

Kill the explorer shell and, SURPRISE!, the application which uses ActiveX as well as shell dialogs and APIs doesn't work correctly. Oddly, this won't reproduce the problem every time.

And why did they kill the shell? "Well, since we only publish IE and not explorer, it was the only way we could think of to replicate the Citrix environment." Clever admin. Stupid fucking clever admin.

I essplained once more that this was the same old Citrix and it's up to Citrix to fix it. I did toss 'em a bone though: I agreed to be on the conf call later.

No, I haven't gone soft. I can't wait to tear the fucks from Citrix a new asshole for pulling this shit again.

x-posted from HuSi, where there's a poll.

Labels: ,

0 non-"17"s have already commented. Click here and be the next.
links to this post

In compliance with $MegaCorp's general policies as well as my desire to
continue living under a roof and not the sky or a bus shelter, I add this:

DISCLAIMER:
The views expressed on this blog are my own and
do not necessarily reflect the views of $MegaCorp, even if every
single one of my cow-orkers who has discovered this blog agrees with me
and would also like to see the implementation of Root Cause: 17-Fuckwit.