Koodiorjatyttö 5

Tule softakonsultiksi! Saat kaksi vihamielistä työympäristöä yhdellä palkalla!

Thursday, March 08, 2007

Dilbert is not funny, it's too real

A month ago:

Koodiorjatyttö: This feature is ready, when should I put it in production?
ImpatientBoss: You can do it right now.
Koodiorjatyttö: I mean, should we make it visible before you get the customers to pay for it?
ImpatientBoss: Sure! I don't have to give them the access to it. We can always make it invisible again is they don't pay.

And guess what happened now:

ImpatientBoss: Errr... Guess what happened?
Koodiorjatyttö: What happened? (Aside) You are gonna make me undo some feature you made me do a few weeks ago?
ImpatientBoss: Just like we talked about, the customers don't want to pay for the feature because it's already there. I tried to remove their access but they say that we have to give them access to everything that is in the database. Can you disable the feature?
Koodiorjatyttö: Sure.
ImpatientBoss: We are gonna tell them it was a free demo!
Koodiorjatyttö: I should probably submit this to Dilbert.

Wednesday, January 31, 2007

We don't need no stupid fields

Koodiorjapoika: Hey Koodiorjatytto! Your reporting script is broken and does not die by itself. Check it out.
Koodiorjatyttö: Weird, I did not change anything. I'll check it.

I try to run it manually. It throws SQLException on account of not finding one of the fields in one of the tables. The field used to be there. I did not delete it. The only other person who uses this database is the ImpatientBoss.

Koodiorjatyttö: Did you delete the field A from the database B?
ImpatientBoss: I did not do anything! It was a long time ago! We are not using that field for anything useful anyway!
Koodiorjatyttö (aside): I'll kill you and tell all this in court and the judge will say "Go Koodiorjatyttö!"
Koodiorjatyttö: The program that puts data in this database imagines that this field exist, so it would be nice to tell me every time you decide to delete a field from it, so I could fix the program.

He is learning though: a few days ago when he suddenly changed one field from int to varchar he actually remembered to tell me about it.

Monday, September 11, 2006

ImpatientBoss strikes again

Mid-August:

ImpatientBoss: Do the thing X! I need it by the end of September.
Koodiorjatyttö: I am on vacation the last two weeks of September. And before that, I have to do things A, B and C, which all have to be done before the thing X. I don't think I will have time for X. Give it to somebody else. For example to somebody who is actually here the last two weeks of September, which is everyone except me.

This falls on deaf ears, mostly due to the fact that the ImpatientBoss is imagining that I know how to do the thing X, and no amount to my assurances to the contrary can shake him in this belief. Have I mentioned that listening is not his greatest skill?

Thing X is, in principle, a tool for analyzing the output of A, B, C and a lot of other things. It currently consists of 7150 lines of Java code and a couple of scripts written by a certain Koodiorjapoika (who has since left us) to analyze the output of another project. The estimated changes to it would be 2000-3000 lines of code. The only reasons ImpatientBoss believes I have some magic skill for the job is that I am the only one who happens to know where said code is located on our CVS repository's directory tree, and how to run it. I, on the other hand, am endowed with the skill of writing and can inform the rest of the company's developers of the code's location. I can also tell them how to run it, although, considering that they are all trained professionals, I think that when faced with a directory containing two scripts names build.sh and report.sh they just might figure out which one of them builds the software and which one of them runs it without any help from me or the ImpatientBoss.

Koodiorjatytto: All right. I'll at least start it and if I don't have time somebody else will have to finish it.

Last Thursday:

ImpatientBoss: I need it working, at least partially, but the end of next week. Or better yet by the beginning!
Koodiorjatytto: I'll try to get it partially working by the end of next week but it's hard to promise anything. Beginning of the week: no way.


Today, at 17:29:

ImpatientBoss: I need it working by Wednesday!
Koodiorjatytto: The only thing it will do by then is throw NullPointerException.
ImpatientBoss: And without any bugs!
Koodiorjatytto (aside): Sure, and the world peace while I am at it.
Koodiorjatytto: This is not very realistic.
ImpatientBoss: This is absolutely crucial, do you understand?!
Koodiorjatytto (aside): This does not make it possible. It is absolutely crucial to me that some medicine that prevents and reverses aging be invented before I get old and die, so get on with it, you fucking nimrod.
Koodiorjatytto: I'll see what I can do, but don't expect miracles.


Wednesday, March 15, 2006

ImpatientBoss tries to communicate telepatically, fails

An angry email this morning at work, cc'd to another boss as well:

"Koodiorjatyttö! Why is the thing X for the functionality Y not done yet? With all the time spent on Y we should have been a lot further ahead already! What are you doing all day?"

Answer:

"This week I have been doing thing A, thing B and thing C (none of which relate to Y). Y works pretty much fine, I was not aware that there is anything that you want me to do about it urgently, but if there is, just tell me what it is. Yeah, and fucking X is not fucking done yet because we fucking discussed it three fucking times last week, and every fucking time you specifically fucking told me not to fucking do it. Not to mention that currently we don't have enough fucking data to do it anyway."

Edit all the instances of "fucking" out, send the mail.

Two hours later, still no answer.

Koodiorjatyttö: Hey, ImpatientBoss, I sent you an email...
ImpatientBoss: I haven't read it yet.

This is what he always answers if you ask his whether he has read your email. I am starting to suspect that there is some kind of a pattern here with him neither listening what people say nor reading what people write.

I explain all of the above verbally, editing all the unprintable words out. Get a laugh instead of an apology. Mind you, I realize that laughing might be his way of apologizing, but yet again I am not a fucking mindreader. I am wondering whether he realizes at all that this kind of stuff tends to piss people off. And if not, is it too late to explain that kind of thing to a person in their mid-thirties?

I guess part of the problem is that I am starting to give up on explaining anything to the guy, because I just know he won't listen to anything and won't remember anything the next day. Or the same day.

At some point I started wondering whether he is some kind of a sci-fi character who is moving back in time, but then he should remember the things that I will explain to him tomorrow, right?

Monday, March 13, 2006

ImpatientBoss

There is a guy at my current job called ImpatientBoss. He wants everything to be done right now and without any bugs. He also wants everyone to communicate well.

Nothing bad about this, mind you. I also want world peace and eternal youth and uncorrupted data from our customers and a few hundred million euros as a bonus. Not gonna happen, though, and most of us learn it when we are 5 or so.

He sort of knows it too, he is just trying to express his frustration, and he is somehow socially inept about doing it. He tends to complain about things is a fairly accusatory tone. I try not to blow up in his face, and have so far been successful, but there is only so many times a person can listen about a particular data import being too slow. If it takes ten hours, it takes ten hours, and what does he want me to do, pedal the computer sthat it would crunch numbers faster?

I have had to deal with him only since recently, because he is doing something with the reporting database and I feed some of the data to the Koodiorjapoika who is in charge of it. The ImpatientBoss thinks that Koodiorjapoika and me don't communicate well enough with each other or him. Mind you, he is often right and often we really don't communicate well enough, and we should, but there is only one person among the three of us to whom I have to explain things five times before they finally get settled in his head, and that ain't Koodiorjapoika. ImpatientBoss is certainly not stupid, so the only explanation I can think of for him failing to understand things after the fourth time is that he Never. Fucking. Listens.

I kind of feel bad about the whole thing, because I know I am not a queen of interpersonal communications myself, but constant bad-communication upbraiding from a person who expects me to read his mind and never listens to anything is starting to get on my nerves.

If this goes on, one day I will catch him in some dark corner and read him a very detailed lecture on our data problems. Every single one of them, and I won't let him out of that corner until he has understood and remembered them all.

SNAFU

SecurityGuy: Argh, argh, we redirected the domain to PeelotRUs and it doesn't work! Why? Why?
Koodiorjatyttö: It doesn't work immediately. Probably will start working sometime today.

Half an hour later:

SecurityGuy: Argh, argh, our new webpage is not working! Why?
Koodiorjatyttö: Am I supposed to know? Looks like PeelotRUs have their database server down. Ask them.

The next day:

SecurityGuy: Argh, argh, our new webpage is not working! It was working yesterday. Why?
Koodiorjatyttö: Their database server is down again. This is one of the reasons I told you you don't need a dynamic webpage.

Friday, March 03, 2006

Adventures in domain forwarding

SecurityGuy: I want our website's hostname to point to the IP of that page that PeelotRUs made for us.
Koodiorjatyttö: Go ahead then, contact your registrar.
SecurityGuy: You do it.
Koodiorjatyttö: All right, give me the username and the password.
SecurityGuy: What username? What password?
Koodiorjatyttö: The ones you have used when you registered your domain.
SecurityGuy: Can't you do it without them? I have no idea. Can't you do domain forwarding at my ISP?
Koodiorjatyttö: They only do the domain forwarding for the domains you have registered with them. The one you want me to change is registered with DomainsForDummies and you need to give me the username and the password of your account there if you want me to deal with them. Call me back when you find them. Bye now.


A while later:

SecurityGuy: I figured that having a username and a password would make your job a lot easier. Here they are.

I go to the DomainsForDummies page, log in, and notice that this particular account deals with a completely different domain, which also belongs to SecurityCompany.

Koodiorjatyttö: You gave me the wrong username and password. You seem to have another account with these guys, too.
SecurityGuy: Try ******* for password.
Koodiorjatyttö: What's the username?
SecurityGuy: I have no idea. Rautaorjapoika!
Rautaorjapoika: What?
SecurityGuy: What's our username and password for the registrar of this domain?
Rautaorjapoika: I have no clue.
SecurityGuy: But you registered it!
Rautaorjapoika: That was long ago.
SecurityGuy: You better find it or else you'll have to call them.

(sounds of SecurityGuy and Rautaorjapoika swearing)

I ordered the registrar to send the username and password to the account of the administrative contact, who is SecurityGuy. Now if I only manage to get him to resend this to me I just might get it done...


Thursday, February 23, 2006

Webpage designers from hell, part 2

Wednesday morning:

Koodiorjatyttö (to SecurityGuy): Hey, did you know that PeelotRUs also want to host your webpage? I really don't recomment it. (Followed by the list of security problems.)

Wednesday night:

SecurityGuy:
I called the PeeloIsMe and told him that he is not hosting our page. Now get a copy and put it up.
Koodiorjatyttö (to PeeloIsMe): Hey, I just talked to SecurityGuy and he decided that we are hosting the page on our server. Now can I have a copy?
PeeloIsMe: But it's a dynamic page! It gets generated from the database for every client according to the application logic! You can take copies and edit them and then submit them back, but what's the point?
Koodiorjatyttö: The point is that we want to host it on our server, and there is no need for it to be dynamic. It's not like we change the content often or need to show different things to different customers. However, if dynamic is easier for you just tell us how to set it up on our server.

SecurityGuy (to Koodiorjatyttö): Shit, all I wanted is a simple web page designed by somebody who knows how it will look in Internet Explorer. Now that I think of it it would have been cheaper just to buy you a laptop with IE.
Koodiorjatyttö: No shit.

Tonight:

SecurityGuy: I called the PeeloIsMe and told him we want it static and on our server.

An hour later:

SecurityGuy:
I called the PeeloIsMe and he insists that it should be dynamic. He says that with a dynamic web page you can keep a track of who is visiting. Just make a redirect from our server to his, and then we'll see about some way to pressure him to move it to ours. He'll send you the instructions. I want it now! Or else I am not paying that fucker a cent.
Koodiorjatyttö: Remember when I told you about those totally cool things called server access logs? We can keep track of who is visiting without making it dynamic. So what do you want me to do?
SecurityGuy: Do what he wants because I don't want to be mean to him, and put it on our server.
Koodiorjatyttö: These are two mutually exclusive orders, and why do you want to keep that fucker happy? And anyway, who found him and where and why and who ordered the damn pages from him and what exactly did they say to him?
SecurityGuy: Uhm. Put the pages up and don't piss him off and I don't care how you do it. He is a relative.
Koodiorjatyttö: Shit. Whose?

An hour later:

PeeloIsMe:
I suggest you just remap your domain name to our page and then we'll see about the page. The whole idea behind this site was to grow it over time into a CRM system - otherwise we would not be involved. The static functionality of the current site will be very insignificant portion of the application. And then after we are done we can set it up on your server if you give us the admin rights.
Koodiorjatyttö (aside): Yeah, right, admin rights. To the guys who probably use their own names as passwords.

Koodiorjatyttö (to the Security Guy): They want us to remap our domain name to point there.
SecurityGuy: No fucking way. Make him make a static copy, and if you fail make a redirect from our server to their. Yeah, and call the guy and don't be a bitch to him but make him do what we want. Be nice and subtle but firm.
Koodiorjatyttö: Yeah, fucking Miss Manners, that's me! Whose fucking relative is he, what kind of a fucking moron ordered a webpage from him and why, I am sorry if that was you, and what exactly did they agree on?
SecurityGuy: Uhm. He is a relative of the CrazyPartner, and he ordered the page, and I don't know what they agreed upon, if anything, and CrazyPartner knows even less about web design than myself, if that is possible. But don't be mean.

Koodiorjatyttö (aka FuckingMissManners): Hi. We would like to have a static version of these pages on our server, as soon as possible.
PeeloIsMe: But we are a serious company! We don't do static pages! We are doing a CRM (Customer Relationship Management) application for you! What you see in those pages is just a lowly and unsignificant beginning! Any code slave girl with a FrontPage can do static pages!
Koodiorjatyttö: Looks like the static pages is all that we want.
PeeloIsMe: You don't know what you want!

He does have a point, mind you, with at least three people telling him three different things.

Koodiorjatyttö: Would you like to explain to me why I should want this CRM thing?
PeeloIsMe: You can see who is visiting your site!
Koodiorjatyttö: I can in any case. I have mastered the fine art of reading the web server access logs. Any other reason?
PeeloIsMe: You don't know anything about CRM, do you?
Koodiorjatyttö: No. Do enlighten me.
PeeloIsMe: Well, if you don't know anything about it there is no point in telling you, is there?
Koodiorjatyttö (aside, since promised not to be a bitch): Way to go with the sales pitch here, dude!
Koodiorjatyttö (to PeeloIsMe): Guess not. We'll be wanting static pages then.

Koodiorjatyttö (to SecurityGuy): Next time you decide to get new pages...
SecurityGuy: I'll inform you before and not after?
Koodiorjatyttö: Right. Yeah, and ordering web pages from a company whose own front page contains 18 html errors - might not be a good idea.

Wednesday, February 22, 2006

Webpage designers from hell

Haven't written for a while, despite a lot of most amusing adventures in data, because could not find a way to write that would not identify the customer, the company and myself.

I have a little job on the side though, occasional webmastering for a certain security company. Recently the SecurityCompany decided to acquire a new webpage without telling me. Which would be quite OK if they hadn't ordered it from a Web Design company called PeelotRUs.

Three weeks ago:

SecurityGuy (SecurityCompanyCEO): Hey, we got the new pages! Check them out and if you like them copy them to our server. Here is the URL.
Koodiorjatyttö: Well, they don't go through any validation, have no titles, the menus are implemented by JavaScript for no visible reason, and they mostly go to the wrong places. Tell'em to fix it.
PeeloIsMe (the CEO of PeelotRUs): Validation is for women and children and would prevent us from using the bells and whistles of the most popular browsers! Titles will be added RealSoonNow. And JavaScript is really cool but it's up to the customer.
Koodiorjatyttö (to SecurityGuy): You have to decide whether you want bells, whistles and unnecessary JavaScript. I advise against it.
SecurityGuy: Ok.

Two weeks ago:

SecurityGuy: Did they fix anything yet? If they did put it on our server.
Koodiorjatyttö: No, they didn't.

Yesterday:

SecurityGuy: Did they fix anything yet? If they did put it on our server. I want it now!
Koodiorjatyttö: Now they fixed everything that does not go through validation that is not bells and whistles. Menus go to the right places, too. BTW, what did you decide about bells, whistles and JavaScript?
SecurityGuy: How the fuck am I supposed to know? I don't care! I want it now!
Koodiorjatyttö: As you wish. We can put it up now and resolve the title and JavaScript issues later.
SecurityGuy: Here is the admin URL, username and password they gave us.

The password is straight from the dictionary, clearly meant to be changed after the first use. I go to their admin page. The connection is not secure. There is no settings, no utilities for changing passwords and no logout button or link. There is a possibility for editing all the pages, but no convenient way to copy them all, or indeed even one, except cut and paste. There is, a bit more surprisingly, also a possibility to edit some other poor fuckers' pages, some music festival.

Koodiorjatyttö (to PeeloIsMe): How do I copy all the pages to our server? Also, just for curiosity's sake, how does one log out of there?
PeeloIsMe: It was planned that the page would be hosted by us. You don't need to copy anything anywhere, you can edit the pages right there. here are the instructions:


  1. Select the article to edit on the Admin->Articles page
  2. Click on the top edit control and hit Ctrl+A to select all HTML text
  3. Hit Ctrl+C to copy it into the clipboard
  4. Go to any HTML editor (such as FrontPage) and hit Ctrl+P to paste the HTML text from the clipboard
  5. Edit the page and do the same in the opposite direction: copy all HTML text and paste it into the HTML edit control on the Admin->Articles page and click the Update button.


PeeloIsMe: Yeah, and the site logs off automatically when you close the browser.

Heh. I'll talk to the SecurityGuy today and then we'll see how long PeelotRUs keep hosting their page. Still, I wish the SecurityFuckers would inform their long-suffering webmaster every time they want to make some little changes, like order the new web pages from some unspeakable morons and have them host it.

Tuesday, November 29, 2005

The joys of data

I haven't written for a while now. That's because we actually got the data on the morning of day 67. The acceptance test of our software was on the afternoon of the day 68.

The data was severely broken, I complained, and in the evening of day 67 TomorrowDude sent me a better version.

I won't bore you with details. They keep fixing bits and pieces of data but after a month of their fixing it is still very broken, and lacking almost half of the records. The highlights include customers that exist in the data twice, uncharitable comments on customers in the username column, as opposed to the uncharitable-comment column, and that a certain one-to-one relation turns out to be one-to-many in many cases. After a month of nagging about fixing the latter problem they finally realized yesterday that:

a) X has many of Y in the data that they are sending us because X has many of Y in their database, even though it shouldn't,
b) they really should fix their database, because every X should have only one Y and vice versa,
c) nobody has any clue as to how the extra Y got into the database,
d) they have to remove all the extra Y, but nobody seems to have any clue as to which ones are supposed to be there and which ones are extra,
e) since the data with more than one Y per X is frowned upon by the XML parser, they have quietly modified the .xsd file to include more than one Y per X, without saying a word to us.

Kukkahattutäti asked me for the nth time to send her the records that are broken, and group them nicely, if I would. I did it for the nth time (just the grep results, nothing fancy), but pointed out that this was not my job, but hers. I think I am becoming rude.

Koodiorjatyttö: I think that at this point you should hire somebody to check your data integrity.
Kukkahattutäti: We have 40 people checking the data integrity now.
Koodiorjatyttö (aside): Yeah, and I have a friend who is checking human rights in Chechnya, and much with the same result.
ProjectManager (aside to Koodiorjatyttö): Tell her to fire them all and hire one who can.
FriendOnIrc (to Koodiorjatyttö): Tell her to fire them all and hire one who can.

Thursday, October 27, 2005

"What? Are you looking for logic?"

Day 64:

Still no data, although they promised it by 13:00.

14:00:
Kukkahattutäti
(to Koodiorjatyttö): Shit, you still haven't gotten the data? I talked to TomorrowDude and he will send it by 15:30.

Kukkahattutäti (to Koodiorjatyttö, about the data): Mallitiedostossa tiedot ovat vain muodollisesti, ei loogisesti oikein. ("The data in the examples is only formally correct, not logically.")

Kukkahattutäti has given us some more exciting info about the data that she should have given us two months ago, and in some cases contrary to what we were told two months ago. Some things she did not know and told us to look it up in the data, which - have you guess it? - is still missing in action. Some things were really nice to know, such as that when the number of items in months do not add up for a year we should use the month info and not the year. Can't say much about data in detail here, but believe me, it sucks.

And we still haven't actually gotten it.





Wednesday, October 26, 2005

Still no data

Day 62, evening:

TomorrowDude:
I thought you have a lot to do? We keep transferring the same files to make sure that scp really works. I'll send you the real data real soon now!

Koodiorjatyttö: Yes, we have enough to do and we'll have even more to do when you send us the data at the last moment.

Day 63:

Still no data, or information on how the data works.

Countdown: 5 days till the software is supposed to work.

Tuesday, October 25, 2005

Getting the data, part 2

Day 61, morning:

Koodiorjatyttö:
Hey, can I have some real data?

Day 61, afternoon:

Koodiorjatyttö:
Hey, can I have some real data? And here are the questions about the data we have.

Day 62:

The data appears, which I can guess from the fact that the date of the last change of files has changed. They do not communicate in any other way. The new data is totally identical with the old, which also means made-up and broken.

Koodiorjatyttö: Hey, we got two new files that are absolutely identical with the old ones. What's the problem and when are we gonna get real data?

The rest is silence.

The software is supposed to be tested and working by day 68.




Monday, October 24, 2005

There is no happiness in the world

Once one finds a perfectly good employer one meets customers from hell. Getting from them the data that our program is supposed to import is a lot of fun.

Day 1:

Koodiorjatyttö:
Here is the IP, the username and the password. Can you put the test data there?

Day 5:

Koodiorjatyttö: Hey, can you put the test data there? It would be so nice to see it.
TomorrowDude: Sure thing. By tomorrow!

Day 7:

Koodiorjatyttö: Sorry to bother you again, just reminding.
TomorrowDude: No problem. By tomorrow morning!

Day 8:

TomorrowDude: Here is the test data. Kukkahattutäti can check if it is any good.
Koodiorjatyttö: Hurrah! Can you answer these questions about the data: ...

Day 29:

Koodiorjatyttö (to Kukkahattutäti and TomorrowDude): Can you answer these questions about the data: ...

Day 33:

ProjectManager(to TomorrowDude): Can you send us the newest version of the data? Preferably the real-life data.

Day 36:

Kukkahattutäti
(to Koodiorjatyttö): Shit, forgot to answer. Sorry. Here are you answers. They are in red. (Sends email with answers that are incomplete and not red even if you look at the html source of it.)

Koodiorjatyttö is away, bosses are trying to get the data.

Day 55:

TomorrowDude: Here is the new version.

Day 57:

Kukkahattutäti (to TomorrowDude): Now might be the time to send the real data.
Koodiorjatyttö (to TomorrowDude): Here is the IP address of our new server, username and password. Can we have the real data?

Day 58:

TomorrowDude: Hey, the ssh-connection works! Wow! I'll send you the data tomorrow!
Koodiorjatyttö: Can you do it today? We kinda need it.
TomorrowDude: The data changed. I'll have to check it and I'll send to tonight.

Data appears, but it is not the genuine data but some made-up test data. Now we have the old test data, the new test data and the new specs that all contradict each other and contain a lot of redundant fields that also can and will contradict each other. Oh joy!

The XML tree of this wonderful document reminds me of the genealogy trees of some parts of my family, which resemble networks rather than trees. It's common in the Redneckland where parts of my family come from, but quite an achievement for an XML tree.

Tuesday, July 26, 2005

Recent jobhunting

This blog hasn't been updated for a while now, mostly because I have a normal job now.

Job hunting was rather uneventful this time around. The only place worthy of mentioning here was BloodyEdgeCompany, a consulting company on the bloody edge of technology. Some highlights:

Interviewer: How much money would you like?
Koodiorjatyttö: (a sum that is about average)
Interviewer: We can't pay that much, but we can offer you the bleeding edge of technology!
Koodiorjatyttö: (aside) The bleeding edge of technology? You mean that no specs ever, and nobody even really knows what we are doing?
Interviewer: How do you feel about working without specs?
Koodiorjatyttö: As long as somebody knows what we are doing...
Interviewer: Well...

Interviewer: How do you feel about working after hours?
Koodiorjatyttö: As long as it does not happen all the time.
Interviewer: Sometimes we have customers and we have to do customer jobs in the daytime and the real work at night.

Interviewer: Would it be OK with you to relocate to SmallTown1 or SmallTown2 for a few months if we need people there?
Koodiorjatyttö: Hell no. There's a limit for everything.