Categories
Uncategorized

At least he aims high

[Email Interview excerpt. In Question 1 I ask the applicant’s yearly salary requirement]

[Insane Indian] wrote:
> Respected Sir,
> answers of ur questions.
> 1. I wrote preveciously 70000-120000 Us $ P.a.
> 2. yes i have good internet coonnection but not for whole day.
> 3. i have personnel computer & i have visual studio6.
> 4. thuis is my personnel.
> 5. igive myself 4out of 5.
> 6. yes ican.
> 7. yes i can.
> 8. little bit tough but i try to manage.
> 9. no.

[My reply follows]

I’m sorry but I have to ask, are you serious? You are applying to a job, not the lottery. According to your resume you have no professional experience, no hobbyist experience, no qualifications, you couldn’t follow simple instructions in the job descriptions, you have no code sample, and you want $70,000 to $120,000 in US dollars? Whatever your teacher told you was wrong, maybe when you were taking notes you accidentally wrote an extra 0. With what you’ve already shown me you’d never be hired for any price. But lets ignore for the moment your bad spelling and grammar, total lack of qualifications, and disregard for the job post. A junior programmer in the US 95% of the time STILL wouldn’t be able to find a job in the game industry at all. If they did, they can expect between $40,000 to $60,000. Since you are not in the US, but India, you’re looking at between $5000 and $10,000. Considering that this is a telecommuting position, you can knock another 20%.

Consider this one of life’s hard lessons. You can thank me later.

Categories
Uncategorized

Resumes part 2

What the hell is with Indian job applicants? Out of about 300 resumes so far (of which 0 included the information I demanded) I replied to all 300 of them. In every case I used the exact same form letter, because in every case they didn’t include the required information.

Of the 300 replies I sent out, I got about 30 responses. I have to wonder what is seriously the problem here.

A. You apply to a job. Admittedly a job post you didn’t read, but lets assume you are looking for a job since you bothered clicking the mouse to apply to one.
B. The company replies a few hours later asking for some information your resume was missing.

Do you:

1. Ignore the company
2. Send the required information?

Well in the case of these Indian resume spammers, 90% of the time it’s 1. Ignore the company.

Now I don’t particularly care that they ignore me. So much the better that I don’t get some idiot that can’t 1. Read. 2. Write. 3. Follow simple instructions. But I’m really just curious. What is it about my response that causes them not to reply? I’m not asking for sexual favors here. I’m asking for

1. Salary requirements
2. Availability
3. Contact information

What job wouldn’t need this information? A few geniuses replied “Negotiable” or “Per your standards” to the salary requirements. OK, great! I’d like to pay $1 a year so how’s that? Not good enough? Well don’t waste my time and don’t try to get me to name some outrageous sum and state your salary requirements when directly asked.

There’s another word that isn’t in the Indian english vocabulary. “Must”

Lets look up “Must” in the dictionary:

1 a : be commanded or requested to

To be commanded to. Such as “You *** MUST *** include salary requirements and sample code.” It doesn’t mean “You can include this if you want to” or “You can reply to other parts of the form, ignoring these parts” Yet this is exactly what I get, where some doofus will reply, answering contact info but leaving those fields blank. Why even waste my time?

Another thing. I thought Indians were hardworking. A few applicants even got so far for me to bother sending a sample test, with questions like “What is a Vector” Yet I haven’t gotten a single answer back to the sample test. Is this hardworking? It seems like the height of laziness and apathy to me. Personally, I’d be excited if I applied to a company and they sent me a sample test. It means they are intersted enough to bother grading my work.

It’s just wierd. Sometimes I feel like I’m in an episode of the Twilight Zone.

Categories
Uncategorized

Resumes from the other side

This morning I posted a job on Naukri.com, a general job site for Indians. It is $50 for the most expensive single job post, which is still 1/7th the price of posting on Gamasutra. I always hear that Indians work harder and cheaper than Americans so it was worth a shot.

When I got home, I saw 88 replies in my job inbox. Great! I thought, until I started reading them. The way it worked out was that my job post has an “Apply Now” button that allows a user of that site to send you their resume. Which is utterly worthless. As far as I can tell these guys just went down every job on the site, rapidly clicking “Apply Now” without even reading the job posting.

I have specific instructions in my job post on what you must include to apply to the job, and not a single spammed resume included all the information I asked for. Normally I’d just delete those resumes but if I did that I’d have no resumes at all. So I just spammed back a form letter indicating that if they want to reply to the job they need to include the information I asked for.

This has given me insight into something I knew, but didn’t consider to this extent before. Spamming your resume to employers gives the impression that the potential employee doesn’t care about your job. Nobody wants to hire a potential employee who doesn’t care about your company or what the job actually entails. Conversely, if I were to actually get a resume that shows the applicant read the job posting and is actually applying to my job they’d already have a foot up over all the other canidates.

What this does is to push the work from the employee (applying to jobs they are qualified for and including the information the company wants) to the employer (to filter through spammed resumes to see who actually has this information). Well sorry, but do I really want to hire someone too lazy to read a job description at a company they are asking to pay them?

Some choice quotes, from the few applicants that actually even bothered to write a generic cover letter:

“Currently i am looking for job in a company like yours where can i explore my potential.”
Um, thanks. A company like mine, and every other company on earth.

“I am a BE in Computer Seience.I have enclosed my Curriculum Vitae for your consideration. ”
But obviously not a degree in spelling.

“I have attached my CV for your kind perusal. Please do the necessary. ”
If by necessary you mean hit the delete key, yes I will.

“I came to know about u r company through website.
I send my resume by attachment. And I request u to go through my resume.
And I hope having response from u. ”

I will reply to u as soon as u learn to write English.

I will hire the first person to reply to my post who actually read it!

* Update *

So I got some replies to my form letter demanding more information.

Thanks for your interest in working for Jenkins Software.

As per the job description, you *** MUST *** include:
1. Your resume
2. Contact information
3. A link to self-contained sample code
4. Your salary requirements in US dollars
5. Your work availability in Pacific Standard Time

If your cover letter does not include these five items your application will be not be read and you will not be considered further.

One reply was a blank email with a spam image link.
One reply was the exact form letter the guy sent me in the first place.
Three replies didn’t include salary requirements.
No replies gave the information I asked for.

Is this a language thing? What part of my reply is not clear?

On top of that, a couple of replies with salary information asked for nearly the same wage I pay in the US. From guys who are completely unqualified, with no experience at all in any industry, much less the game industry. What the hell? I wouldn’t even pay a guy in the US what they are asking for much less hire them to begin with.

I’m getting the feeling this was a waste of time.

Categories
Uncategorized

The perfect scripting language, part 2

The author of Angel Script was kind enough to reply to me about his library:

Hi Kevin,

AngelScript is not an interpreting scripting engine, but its built-in compiler is fast and suitable for (re)loading and compilation of scripts at runtime. The script language is similar to C++, though not 100% compatible. It is also possible to compile the script code and save the precompiled bytecode to disk for later use, if you do not want to distribute your script sources.

You mentioned in your post that the script will be able to call into the engine but not vice versa. This is not quite true, the engine obviously has to know how to make a call for it to be able to do it, but you could define interfaces or callbacks that the script can connect to, which the engine then uses to call into the scripts with. This is of course not an exclusive feature of AngelScript.

The main advantage of AngelScript over other scripting languages is that it is statically typed, just like C++, and that it can in most cases interact directly with the C++ application without the need for wrapper functions. This makes it particularly easy to embed in applications with an efficient interface. I cannot guarantee that AngelScript is the fastest scripting library, but it is for sure one of the fastest available.

I suggest you give it a try, to see if you like it and if it suits your needs.

Regards,
Andreas

1. It is good that you can reload at runtime.
2. To me it’s roughly equivalent to releasing script and releasing C++ game code for modders. On one hand, with script you don’t need to think about which interfaces you expose, and making nice header files for those interfaces. On the other hand, if you plan for this from the start it’s not really extra work and you get the use of a debugger.
3. Regarding script compilation, I think the best solution is to check the file dates of the script and the compiled script. When your game runs, compile the scripts that are out of date. If you change scripts at runtime and reload them, always compile them.
4. There is no debugger for AngelScript that I know of. Perhaps the script code execution module throws an exception? I would refrain from writing too much in script without a debugger. This is not a big deal from me, since I think it’s always a bad idea to write too much in script. Script should only be for things which change very frequently during development, such as gameplay specific numbers or algorithms. The Unreal Engine is an example of where script was overused pointlessly.
5. The author points out that Angel Script isn’t directly equivalent to C. With the use of defines (there is a preprocessor add-on) and refraining from using non-equivalent language semantics I see no reason why one would not be able to both script and compile the same code. I’d have to look at it in more detail to know for sure.

I can see the use for this for something like a map file for an RPG. When the character talks to NPC A, and selects option B, then trigger C.

Categories
Uncategorized

The perfect scripting language

In general I don’t like scripting languages. But you have to admit it’s much faster to iterate changes in a scripting language than C++. Here’s a simplified list of pros and cons:

Pros of C/C++:
Fast execution
Compiler helps you find errors
Full access to the engine.

Pros of Scripting:
Fast iteration
Easy for users to modify

Conversely:

Cons of C++:
Slow iteration
Hard for users to modify

Cons of scripting:
Slow execution
Error prone
Access limited to exposed interfaces

It’s true that any language which can be interpreted can be compiled, and any language which can be compiled can be interpreted. So how’s this for an idea:
Your scripting language is C or C++ (why invent a new language?) which is interpreted and has full access to all your other code. Obviously your script can only call into your engine, and not vice-versa, but this is the only limitation.

Since it’s a script, it is valid and reasonable to hardcode numbers into the script.. You can tweak these numbers and change the script while the game is running to play around with settings.

When you are ready to ship a build, switch your flag to compile rather than interpret the scripts. Or, if you wish user mods, just leave it interpreted.

This is one use of a script system that makes sense to me and I’d fully support in a game project.

Note: there is a library called AngelScript but I’m not sure if it’s capable of doing everything I outlined here. If so, let me know!

Categories
Uncategorized

Sourcegear Vault does not support fixing merge conflicts.

I found a problem with Vault which is that, when a merge conflict arises, I can’t edit the code generated by the resultant conflict. My only choice is to accept or reject parts of the code.
Forum post

This simple case illustrates the problem:.

Lets say I have a released function as follows:
void func1(int numbre);

I fixed the spelling in a branch:
void func1(int number);

I add a parameter to that function in the released version:
void func1(int numbre, bool b);

Obviously no tool can figure this out automatically so a merge conflict arises. The proper solution for the branched version is to have both the “bool b” parameter and the correctly spelled variable.
void func1(int number, bool b);

However, the only option I’m given is to use the released version.
void func1(int numbre, bool b);

I have no way to edit text in the merge resolve tool. Even something as limited as saying “CONFLICT HERE” and saving out the file would help. But there’s no support for that. My only option is to save the incorrect file, fix the conflicts myself, and then merge later, which takes 10X longer than simply changing a variable name. This is doable but pretty unacceptable considering that Perforce does let you edit code and that conflict resolution is a fundamental feature of a source control application. I could use it by myself, but for a large company?

Categories
Uncategorized

Artist of the year

At work an artist wanted to improve the framerate by disabling lights. So he made the light color black. His logic was that if he couldn’t see the light, the light didn’t exist. He then bothered us (the graphics programmers) complaining that the framerate was still too low.

This is similar to the story of the woman who used the smallest font in all her Word documents in order to minimize the filesize.

Categories
Uncategorized

Anti-spam solution against bots

There’s an easy solution to bot spam that as far as I know nobody has implemented yet.

1. All spam contains hyperlinks
2. All spam is sent repeatedly in a short timeframe from the same computer.
3. There is rarely a legitimate case where a single computer will send greater than some threshold (say 20) emails in a short timeframe which contains hyperlinks.

Therefore, just have email servers check outgoing emails. If emails per second is greater than X, and greater than Y emails have been sent by that system already in the last M minutes, and all those emails contain hyperlinks, that computer is potentially sending spam. It would be more accurate to add the condition “Identical or similar hyperlinks” but that would be easily circumvented.

Legitimate marketers will have their own email servers so can still send legitimate spam (such as mailling lists). Bot computers behind AOL accounts would be throttled.

The way to implement this is through a table which tracks the last N email senders. Every time an email with a hyperlink is sent, lookup that sender in the table. If that sender is not in the table, add it. Add to that sender’s spam score the number of recipients. If this would cause the score to exceed some threshold T, reject the send entirely and flag this sender in some kind of log as a potential spammer. This score will diminish by 1 point every M seconds. If the score reaches 0, remove this sender from the table.

With the correct settings, this won’t bother 99% of the users, spam bots would be throttled, and perhaps most importantly they would be flagged as suspect systems. An admin can then check if that user is indeed spamming and ban as appropriate.

Categories
Uncategorized

Minor annoyance of the day: vector

When I was in college I would occasionally overhear a classmate refer to a vector when talking about a homework project. For years I was mildly puzzled by this. My programming classes didn’t have anything to do with linear algebra. It made no sense, but as I only heard it rarely I didn’t follow up.

Later on I found out that stl calls a dynamic length array a vector. What the heck? Other than trying to sound pretentious, I can’t think of any grounds for or reason to relate the two. A vector is a “quantity completely specified by a magnitude and a direction.” A dynamic array is an set which can grow in size.

The best term to use is a List (which is what I use in RakNet).

Categories
Uncategorized

Telecommuting for programmers

I’ve worked as a telecommuter for 7 years and as an on-site employee for 3. I’ve spoken to those who are both strongly for telecommuting and strongly against it. The conclusions I’ve come to are:

Telecommuting programmers work more and are more productive in the hours they spend
Because there’s no physical going to work, one is always at work. As a telecommuter I tended to work 10-12 hour days as opposed to the strict 8 hour schedule at my on-site work. Furthermore, I tended to work at times when I was feeling most productive, with fewer interruptions, noise, and on better equipment. Last month a lead programmer at the Collective spent one day working at home and remarked to me “I’m surprised how much I got done at home.” This is no surprise to anyone that has telecommuted.

Telecommuting programmers have better communication
A common argument against telecommuting is that communication is worse. The quality of written vs. verbal communication depends on the communication skills of the indvidual. While some producers and artists need improvement on this, programmers tend to excel at textually describing information, using accurate terminology with complete descriptions and all necessary and relevant information In practice, be it instant messenger or email, programmers are more likely to accurately describe what they mean in text than verbally. Furthermore, it is much faster to read and write than to speak, without the repetition and noise you get with verbal descriptions. Should verbal communication be necessary, there is an invention called the phone that does a pretty good job. It’s never been necessary for me in 7 years.

Regardless, I really don’t see any difference between speaking to someone on the phone and speaking to them standing there. Need diagrams? Want to show a bug? I’ve never had a case where a bug could not be accurately described to me without being there in-person.

Another benefit of electronic communication is that one can quickly send short messages “Where is the code that renders the GUI?” on instant messenger and get a fast response “See GUI.h”. This results in vastly improved productivity for the person asking the question without disrupting the attention or workflow of the person answering the question. With verbal communication you invariably disrupt the person you are asking and it takes them 15 minutes to get back into the zone.

Part of the reason why one person (me) was able to implement loading and saving of multiplayer games, with 4 game modes, in Deadly Dozen 2 was because of the efficiency of electronic communication. Anytime I had a question I could ask and get a fast answer. There is a massive time savings between being able to ask a question and continue working as opposed to having to guess and check foreign code, and redoing work because a previous assumption was incorrect.

Everyone I’ve spoken to that has tried telecommuting has had positive feedback regarding communication. One producer indicated to me that he wouldn’t allow it because of the poor communication. When I asked him if he actually tried it before his answer was “No but…”

Telecommuting programmers are cheaper

No office, no power usage, no free lunches, the programmer provides his own equipment. Programmers at home tend to continue working while eating while programmers at the office tend to go out to lunch with coworkers. Furthermore, telecommuting positions are in higher demand and there is a shortage of available positions. Due to supply and demand, this means telecommuting employees will often work for less and there is a greater pool to choose from. I’ve turned down work at Blizzard because they have no incentive to offer me to work there other than more money. But if they were to let me telecommute my quality of life would be so much higher that would supplant any monetary incentives they could offer.

But I don’t know who is working!

One argument against telecommuting is you can’t control people. You don’t know what they are working on or if they are working at all. However, just because you force a programmer to be at his desk doesn’t mean he is working. As long as the employer practices due diligence, keeping track of what people are working on whether they be at the office or not, you can easily detect the bad apples.

In my opinion a company that lets its programmers telecommute would enjoy increased productivity, lowered costs, and better communication.