Artificial Intelligence
Richard Dawkins TED Talk on Militant Atheists
by Travis Johnston on Apr.20, 2010, under Artificial Intelligence
Besides being a huge fan of his books and theories I really like his call to action in this video for atheists to stop taking the easy way out of calling themselves people of agnostic faith. I do understand their want to avoid controversy with the established religions in work type situations where it could have a dramatically effect their careers. The problem is it is just plain weak, sort of like when a girl say they are not breaking up with you but they just need some space.
We are not back in the days were telling people you believed in science could result in the church having you burnt at the stake or imprisoned for the rest of your life. So really there is no good excuse to not be honest about it every time it comes up. While religion has built in recruiting system to ensure it not only survives but grows the atheists believe that in time everyone will naturally come around to the scientific facts. I believe that would naturally happen on its own but given that religion has 2000 years of head start we need to promote it if we want this to happen any time soon. This lack of active support by the atheists is the reason that we may be going backward in some places like Texas with evolution and Tomas Jefferson getting remove from the school system.
You have to let people know it is OK to believe in science…
Think about how people could interpret your resume, Part 1
by Travis Johnston on May.05, 2009, under Artificial Intelligence, Industry, Interviews, Lessons
I have gone to 100′s of pre-interview resume reviews with other programmers to discuss our thoughts on a candidate and determine what everyone will quiz them about. I am always still amazed how everyone can read the same resume and have completely different take on what could possibly be good or bad about this candidate . It is a different trigger for everyone, sometimes if anything is a little vague or over sounds overstated people get turned off and suddenly the interviewee is fighting an up hill battle.
Be very careful with the resume wording because given the chance people will often interpret it completely wrong…
Even if you write the clearest resume possible it is not even close to 100% so you still have to then anticipate all the ways they could take everything on your resume wrong and and figure out how you are are going to convince them of the right story on the phone or during the live interview. Is it a pain, yes. Is it right, probably not. But you literally have to be prepared to defend everything on your resume to make the interview go well. Some people will always come to the interview assuming the worst about the candidate and you will have to change their mind about every point.
Lets hit the examples:
Worked for company X for a long time.
You might be thinking that it shows loyalty to the company, dedication to your job and that your not a quitter during tough times. You might also be rightly thinking that is shows how valued of a employ you were, you survived 8 round of layoffs and your position was never in danger.
Others might see X years and think that means you have no ambition at all. They instantly think you are one of those people that found a place to hide and have just been collecting a paycheck for X years.
Defending working at a company for a long time, sounds silly right? When they comment that you about working for a company for a long time. Don’t just answer yes. If you started during the beginning, talk about how you helped grow the company and it was pride thing. If you got shares then talk about the ownership responsibility. If you did not have the above then talk about the great projects you got to work on or great friends you made or how much you learned there. Make sure they believe you had reasons to stay and now have a even bigger reason to leave.
Have a bunch of grind tasks on your resume.
Say you have done UI, TCR’s and some of the other grind tasks that people do not generally like to do. You might think this shows you are willing to take one for the team and do what is needed to get the game out. You might even think is shows you are not a prima donna and will not be bitching all the time.
Others will see it and think that you must not have any real skills if you have been given grind tasks. They will automatically rank you intern status because that is usually who they give those tasks too (yet they wonder why they often fail first submission).
Defending grind tasks. If you were on a time line explain that the project could not afford to be kicked and had to get through first time, it was an insurance policy thing. If you were doing other tasks as well explain that the grind tasks were in addition and you are really a super man in human cloths. If you were really only doing UI / TCR’s then explain how you were building tools and infrastructure so it would be less work for those that followed you. Point is to make sure they do not believe that you were tasked with grind work against you will or that you were not happy with it. Make it seem like it was a challenge or accomplishment.
There will be a second part to this topic as there are many more potential issues. Big take away should be to read your resume over and try to predict how people could take it wrong and be prepared to talk them down from that position. The thing is they will not ask you to defend your work experience, they will just drop an off hand comment on something and you need to detect it and then take over the conversation till you get your point across. Missing these small hints in the conversation means people will be leaving the interview with bad thoughts still and you have lost.
Vision and Hearing models in games
by Travis Johnston on Mar.23, 2009, under Artificial Intelligence, Programming
Two more big frustrations with games of late.
- Just because I am in your NPC’s cone of vision does not mean you automatically know everything about me.
- Sounds drown each other out for the user since they get mixed and converted to analog, but for NPC’s they get each sound individually and effectively hear perfectly.
Vision models, we the programmers do way to much cheating in them and it makes stealth and military games frustrating.
- Humans do not have a perfect vision with their 200 degrees of range, the back 20 degrees is only for motion at best.
- Farther a item is from the center line of our vision, the worse we are at telling if it is moving, depth perception and details.
- Farther out it is from us the less detail we have have on judging direction, speed and details.
- The further out the longer it takes us watching to judge movement direction and speed, it is not instant.
- If we match colors of our surrounding ( camo or shadows ), that harder it is be spotted if stationary or slowly moving.
- In the dark we have much less range, takes much longer to focus and switch from light to dark area’s.
- In the dark any bright area reduces are ability to see into the dark area’s again for a long time.
- In really bright light we see outlines better but details less and can not look toward the sun at all.
- If there is multiple things moving it does not slow them down as they process all of them instantly.
All these factors are ignored in most if not all games right now. As soon as you enter their view cone of an NPC, they spot you, instantly know your speed, distance, and can lead you with lobbing weapon perfectly. They know what weapons you are armed with and if they should move in or hang back. Everything that the military would tell you to do is useless because they are doing a cone check and line trace instead of trying to pick information out of a noisy frame buffer.
Not saying we want to start comparing old frame buffers rendered from the NPC’s point of view and try to pick out moving blobs in them. That would make AI very expensive and not scale well at all. But we can modify our current model to take into consideration some of these human deficiencies.
Hearing Models, this is even worse as most engine do any testing to see if NPC’s can hear something.
- The just use range tests to see if something could be heard, no ray traces even.
- If there is multiple sounds they test all individually, there is no concept of sounds getting downed out.
- Sound speed is not taken into consideration, all sounds are heard instantly regardless of distance from the source.
- NPC’s know the direction and movement of a sound instantly unlike humans that have to listen for a couple of seconds awhile gather that info.
- The confusing effects of bounced sounds and echo’s are ignored, locations are picked instantly.
- No difference between the travel of high and low frequency sounds.
There is a reason most games do not try to account for all this, it would be very expensive. Since sound bounces around corners and move through walls, it is not easy to model fall off and propagation. Inside a portal system you have a little more information about enclosed area’s but still not enough to calculate it properly. To properly model this you would need flags for wall materials, openings, graphs of multiple paths and distances, all objects between you and the sound source, ground shape, echo’s and other constant noises. Not something you could do in real time, but something you could do offline and bake out into the map like we use to for a PVS ( Potential Visibility Set ).
Then we could quickly query the zone the sound is in and our NPC is in, determine if we can hear it, how damppend it is, how much reverbe would be added between here and there.
It could be great…
Interviewing in a skilled labor force industry
by Travis Johnston on Mar.20, 2009, under Artificial Intelligence, Graphics, Industry, Interviews, Lessons, Programming, Rant, Start ups, Testing
At least once every year or two I think it is important to take an interview even though you might not looking be looking at moving. It ensure your interviewing skills are fresh and that you have not lost touch with reality and became irrelevant outside the current company.
If you can not get at least one offer letter a year for more than you are currently making then it means either your vastly over payed or more than likely your skills have stagnated and you need to kick it up a notch. Even beyond just keeping your public speaking skills in shape there are other reasons to stay in the interview process.
If you can not get at least one offer letter a year for more than you are currently making then it means either you’re vastly over paid, or more than likely your skills have stagnated and you need to kick it up a notch.
Even beyond just keeping your public speaking skills in shape there are other reasons to stay in the interview process.
Reasons to get interviewed:
- Its good to see how a lot of other places work, so it is often an great learning experience if you do not mind asking a lot of questions.
- Its good to see what techniques others are using in the interview process to verify peoples skills and see if personalities will fit in.
- Some times they will ask really hard questions that will make you think, it is a chance to reflect and improve yourself.
- There is a lot of feedback in the interview process
- If they phone interview you, it means you resume is still relevant.
- If they bring you in for an interview that means you sound intelligent on the phone.
- If they do not walk you to the door right away that means the lowest people at the company think you have skills.
- If you make it to the end of the interview that means even people outside your little world think you can communicate and you have skills the company needs more of.
- If they send you a offer letter that means you really do still have a lot of relevant skills and your personality does not aggravate people in < 1 hour.
Reasons to interview others:
- Again hear how other places work and borrow good idea’s
- Meet interesting people, I have kept in contact with people I have not hired just because they were doing interesting things that made me think.
- See the different mind games that go on in interviews, they present themselves in the best light, and you have to figure out what they might be covering up. You basically have < 1 hour to figure out what makes them tick, verify their skills and sell them that this is the best place to work. It is a hard job that only gets easier with practice.
- Being on the other interviewing side of the process will give you a better feeling for what is going on the next time you have to be the interviewee.
So take a day out of your year to get interviewed somewhere, it is better to keep these skills sharp while you still have a job vs getting laid off and then blowing the first X number of interviews because you are out of practice.
Reject conventional interviewing wisdom:
One thing I have messed up in the past and I think many people still mess up today is they believe interviewing with more companies always increases their chances of getting a job. That is true in a low skill environment when their needs can be meet with the next person that walks through that door and can hold a shovel. There is no reason for them to waste time interviewing many to find the best person that can hold a shovel; anyone will do. In that situation only by being in a lot of places will you have a good chance of being the next resume/person they see after they decide they need someone.
But in a skilled industry they do not want the next person, they want the best person for their money and only by being their #1 pick will you end up with a job. You need to convince 8 – 10 people that you can not only do the job but you will take work off their plates, not be a drag on the team, can grow with the company, will not leave before the game ships and will be useful on the next project. Plus if your not the last person they interview your impression has to be so good it survive more recent memories about others they have talked to.
In this environment it does you ABSOLUTELY ZERO good to interview at a lot of places and always be their # 2 or #3 pick. You are still just as unemployed as the next person that got drunk and did not even show up to the interview…
So do not waste your time mass spamming companies and then coming to these interviews without a full plan to make them believe you are perfect for that job. If you have no idea what the company really needs given their history and specific details on how you would fill it; you are unlikely to ever be their top pick for the current job. If you have not through about what they would likely need in the future given where they are given their past course then it would be harder to convince them of your future worth to the company.
Seriously your company specific cover letter and resume alone should have all ready have convinced them you can do this job. The interview itself should just be for them to convince themselves that their first impression was right, you play well with their team and you should be their #1 candidate. If your spending your time in the interview figuring out what they do and what they need. You are now fighting an uphill battle and by the time you figure it out you will not have enough time to convince them of much. Spend more time researching each spot you apply to and less time doing mass interviews, you will find that you get better offers a lot faster.
I really do not like the user interface in RTS games
by Travis Johnston on Mar.18, 2009, under Artificial Intelligence, Programming
My first problem comes from trying to select units, you usually only have two options.
- Select every unit of a certain type that you click on. Only useful in about 5% of the cases.
- Select everything in a click and drag rectangle / circle that you grow. This is used the other 95% of the time but only because there is no better solution offered. It is still not really that useful.
Most of the time I want a mix of units but they are standing in groups out front of their spawn-er type building. I do not have time to individually pick them and move them somewhere I could group them with other units. Trying to select them in a rectangle is not accurate as they stand on top of each other in odd patterns and if you have limited group sizes you need exact numbers.
Why can I not just draw a closed pattern on the screen with my mouse and have it select all the units enclosed into a group. Ensuring an joined spline is not that hard and projecting that onto the terrain to detect the units is not hard either. It just needs to be done.
Second problem comes from trying to move groups of units around.
- I do not have time to manually set a way point and wait till they get there before setting another to manually move units around map dangers.
Really what I want to do is take my group and start drawing points on the 2D overview map until I get to my destination. The group should then follow the spline until it gets attacked or reaches its end point at which time it informs me.
This would make RTS games a lot more fun. There was nothing worse than a bunch of humans in Command and Conquer taking a straight line to the destination through the plant fields that took their health. Either make the AI better, path-finding better or allow me to compensate for both by doing it for you.