Browsed by
Category: Technical

How Not to get Hired – PAX West 2016

How Not to get Hired – PAX West 2016

I attended a number of panel talks by game developers at PAX West this last weekend. Besides the fun of talking with the developers and some of the comedy/youtube celebs, the most interesting ones for me were the career oriented ones. While already in the field, I think it’s always a very good idea to keep up to date on what new hires are doing in high tech. High tech and programming are fields you can very quickly find yourself ‘deprecated’ if you are not careful. One of the key pieces I’ve found over time is to keep abreast and versed on the latest technologies and hiring trends.

Hiring for game development can be very competitive and sometimes fickle. It’s an industry moving much faster than the rest of software development, so it’s actually a good place to start looking if you want to see some of the hiring trends coming to your latest Fortune 500.

Here are some of their tips:

  • Research your desired position and make sure it’s what you want. Many people don’t know what they want. That’s ok – but you will eventually need to pick. Know what is required for the job area you are considering. Looking at postings gives you an idea and you can see if that’s what you want to do. Especially for artists, find a studio that does work in the style you want to do. If you’re a 2D cartoon artist, don’t apply to big photo-realistic 3D houses. This matching of skills/desires is really important.
  • Look on Amazon – there are now decent books on how to get hired into the game industry.
  • Create unique cover letters that show how involved you are in the community, projects you are part of, and the passion you have. Ex: “I love finding things that drive my coworkers crazy and fixing them”, “I was at PAX East and saw a talk by X from your company and was excited when they started talking about Y.”
  • Proof-read everything you send to them. Resumes, cover letters, emails, etc. They showed lots of examples of people that didn’t seem to have basic literacy skills. Communication is important in game studios, so texting style communication is a mark against you.
  • When customizing your resume for a position, make sure you’ve done it yourself and know which one you gave each place. People have shown up to interviews and get asked about a detail on their resume they don’t remember or was worded differently because they didn’t write it or review it sufficiently. Not cool.
  • Portfolios must show you can do the work you claim. If it’s a UI position then don’t give me tons of examples of your 3D modeling. They must see you doing the work you claim you want.
  • The *baseline* is now knowing the company well. You should have at least played every one of their major titles and have exposure to all their minor ones. You get docked for this badly if you haven’t.
    • Play at least a little of each game they ship before arriving.
  • Practice, practice, practice answering questions out loud. Really get them down well. Have your mom, friend, dog, etc ask you questions you know you’ll probably get.
  • Don’t just show up at their studio and inquire about jobs. That’s antiquated and actually a bit creepy. Receptionists aren’t set up for it. Just don’t. Do it over the web.
  • Be excited. Getting on site for many companies means you’re already at a 50/50 chance of a hire – or higher. They’ve already vet you a lot via your online portfolio, screens, and talking with previous coworkers/employers. Show energy, don’t screw up, and you’re likely in.
  • Ask them questions too. What is your development cycle like? How long do you get per asset? Crunch benefits, duration, style, etc? To avoid bugging them later, ask when should you expect to hear back from them.
  • Expect a skill based test – 100% will happen even for long-term and very senior developers and artists.
  • Know what you are worth. Check out Gamasutra salary surveys, etc. Always respond to the first offer with needing a day/few to think about it. Make sure you calculate differences in cost of living for the city, etc. Everything is negotiable to some degree so ask.
    • Approach it like a conversation with a friend. “So, you offered X and I did some calculations based on what I’m making now, the cost delta in the new city, etc and I’m coming out with this number Y. Could we find a way to get closer to that?”
  • Don’t wear a suit or you’ll get teased a bit. Also, don’t wear anything that would embarrass your mother. Yes, it’s a much more casual environment but it’s not a show of how crazy you can be. Bathe. You need to show you care about how you come across to others because you will be working in teams and giving/receiving suggestions/improvement tips/feedback all day. Appearance shows you understand how to pay attention to how you come across.
  • Always send a thank-you note after the interview.
    • One person who really messed up an in-person test actually sent them a test he did on his own afterward to repair the damage. He didn’t get that job, but he did get one a year or so later.
    • If they say no, it’s no for now. Not no forever. Never give up and always try again. However, you must work towards your goal. Really show progress in your portfolio over time. If you go a year and your portfolio is the same, you’re failing and likely going to continue getting rejections. Even when employed, consider a periodic portfolio review from companies you might want to work for. Send it to them and ask for feedback. Constant improvement shows you are interested enough to keep going and growing. Side projects are key to this. One person actively did this and incorporated the recruiter’s feedback and got a job about a year later.
    • Perhaps ask the recruiter what you could have done better or if there was a gap you could work on.
  • Be ready to move a lot in your career. Each job change will almost always come with a location change.
  • DO NOT BURN BRIDGES or make a bad impression in any of your interactions. The game dev community is shockingly small and everyone knows at least one person at just about every studio. They will call people you have worked for and check you out.
    • Always stay professional – even at bars around your city like Seattle. Odds are very good there is someone within earshot of you that knows someone that knows them.
  • Not a lot of people will make it to the level they aspire too. The best strategy is to find something you want to master then master your craft and apply at a place that matches that style. It takes tons of grinding work – no quick solution. This is why you need to find something you really love. Practice every day. Gimmicky methods of following trendy things doesn’t really work long term. Hone your skill and find the thing that matches that. Seek out mods, indie projects, or other things you can contribute too.
    • This is why it’s important to really find something you love first because you’re going to spend a LOT of time on it.
  • Look into resume link for connections. The recruiters scan Art Station and Polycount to scout talent. They want to see you do good work but that you are also positive, take good feedback, and show progress.
  • Internships are starting to catch on at studios – slowly. Check it out if possible.
  • Use the cover letter to explain any career shifts or gaps.
  • For beginners: the expectation is that you can at least do fan art. Could the studio take that art quality and put it in their game today? That’s your bar.
  • Make contacts with recruiters and with others in the industry that do what you want to do. Make connections constantly, at every conference/meetup/IGDA/etc, and work your network. That’s where your jobs will come from.
  • Portfolios must be online and high quality as a *minimum*. Are you on other sites known for posting work for your discipline (Polycount, etc)? Don’t forget to give passwords to password protected portfolios.
  • Your portfolio is only as good as the weakest piece. Constantly work on replacing content with your latest amazing stuff. Within a few years, you will likely start removing even the good stuff. That’s your goal.
  • Each position and your work should show progression in your skills. This is huge. Shows you are a high performer and have a habit of development and growth.
  • Do not have your parents/others send letters to recruiters on your behalf. Borders on lazy/uninterested to downright creepy.
git’s git:// protocol fails, but git http:// succeeds

git’s git:// protocol fails, but git http:// succeeds

A number of source websites expose their source via the git:// protocol. Unfortunately, the git protocol recently broke on one I used, but the git http:// protocol was working. Instead of changing my fetching scripts, I found a clever url replacement in git using the following command:

git config --global url.https://gitsite.com/.insteadOf git://gitsite.com/

This allows you to change the protocol per URL instead of globally. Exactly what I needed.

Using puTTY with usb serial ports on Fedora/Ubuntu/Linux/etc

Using puTTY with usb serial ports on Fedora/Ubuntu/Linux/etc

Serial ports are a thing of yesteryear, but never seem to go away. If you have a USB adapter that exposes serial ports to your favorite Linux branch, knowing how to get to them isn’t intuitive.

puTTY is a great terminal emulator, and you can connect to whichever port is exposed using the following format:

sudo putty /dev/ttyUSB0 -serial -sercfg 115200,8,n,1,N

If it’s on a different port, use /dev/ttyUSB1, etc.

As for cables that expose a serial port via USB, I recommend the Sabrent USB 2.0 to Serial (9-Pin) DB-9 RS-232 Converter Cable using the Prolific Chipset.

3D movies without the glasses

3D movies without the glasses

MIT made a movie screen that brings 3D to all seats – without the glasses

MIT set out to create a display that lets people see the 3D effect in a movie theater, from any seat in the house – no glasses required. Teaming up with Israel’s Weiszmann Institute of Science, CSAIL managed to put together a prototype called ‘Cinema 3D’ that uses a complex arrangement of lenses and mirrors to create a set number of parallax barriers (think of Venetian blinds that show a slightly different set of pixels to each of the viewer’s eyes to simulate depth) that can address every viewing angle in the theater based on seat locations.

 

Police possibly 3D printing murder victim’s fingerprint to unlock their phone

Police possibly 3D printing murder victim’s fingerprint to unlock their phone

Police in Michigan have a new tool for unlocking phones: 3D printing. According to a new report from Flash Forward creator Rose Eveleth, law enforcement officers approached a professor at Michigan State earlier this year to reproduce a murder victim’s fingerprint from a prerecorded scan. Once created, the 3D model would be used to create a false fingerprint, which could be used to unlock the phone.

http://www.theverge.com/2016/7/21/12247370/police-fingerprint-3D-printing-unlock-phone-murder

Mounting a Windows hosted samba share from Linux (Fedora/Ubuntu/etc) – with a domain account

Mounting a Windows hosted samba share from Linux (Fedora/Ubuntu/etc) – with a domain account

Samba shares can be finicky beasts. Mounting a samba (smb) point shared from a Windows host doubly tricky at times due to cross-platform differences such as domains.

If you ever find yourself trying to mount a Windows hosted Samba share and need to log in with a domain account, here’s the format:

sudo mount -t cifs -o domain=<YOURDOMAIN>,username=<YOURUSERNAME>,password=<YOURPASSWORD> //<HOSTNAME>/TestShare /mnt/

This mounts <hostname> which can be either an ip address or host name to the directory /mnt/ when using the proper domain, username and password. Whew.

You can also test your connection by using smbclient, which seems to have a more forgiving syntax.:

smbclient //<HOSTNAME>/TestShare -U <YOURDOMAIN>/<YOURUSERNAME>
ex:
smbclient //myhost.com/TestShare -U ibmdom/billwaters

This would connect you to myhost.com/Testshare directory using the user account billwaters that is part of the ibmdom domain. It would then prompt you for your password. You can also optionally add the password to the command line, but this allows you to type it in separately.

Using a physical drive/raw drive access with Virtualbox

Using a physical drive/raw drive access with Virtualbox

This comes from the good article here, or in the VirtualBox documentation.

Virtualization has been a tremendous help to developers such as myself. It keeps us from having to keep a pile of hard drives/machines all running different operating systems. And while this is great, there are some times when you might want to use a raw hard drive. For example, if you pull a hard drive out of an existing system and want to keep the OS/data intact but use it as a virtual machine inside another host OS.

Well, you can set up VirtualBox to use a physical hard drive inside a VM. This method is called “raw hard disk access.” This allows you to mount or boot a secondary hard drive or external USB as your storage device inside the VM.

Warning: Do not attempt to mount or boot the partition that runs the host OS with a VM, as that can lead to severe data corruption. And no matter which drive or partition you want to mount, it’s always a good idea to back up any existing data on it before continuing.

Creating the Virtual Machine:

You’ll first want to create a virtual machine within the VirtualBox GUI. Choose all options like normal, but when asked about the virtual hard drive, select Do not add a virtual hard drive.

Next, you’ll need to find the path and drive number of the physical drive you’d like to mount:

In Windows, open Disk Management. You’ll see the associated drive numbers on the left and will identify them later as PhysicalDrive0, PhysicalDrive1, etc.

In Linux, run the following command: sudo fdisk -l. You’ll see a listing of the partitions. Make note of the desired drive in the format of dev/sda0, dev/sda1, etc.

In Mac OS X, use the following command: diskutil list. You’ll see a listing of the partitions. Make note of the desired drive in the format of /dev/disk0, /dev/disk1, etc.

Now open a command prompt on your OS. If you’re using Windows as the host OS you will also need to go to the root directory of VirtualBox using the following command: cd C:\Program Files\Oracle\VirtualBox

Creating the VirtualBox Hard Drive:

Now you can run the command to create the virtual hard drive file that points to your desired physical drive. For each of the following examples ensure that you input the desired names between the arrows and replace the number or pound sign with your desired drive number.

For Windows:
You often must be administrator to run this command. Make sure your cmd.exe is running as administrator. This also means you must start VirtualBox as administrator to use these drive links.

VBoxManage internalcommands createrawvmdk -filename "C:\Users\\VirtualBox VMs\\.vmdk" -rawdisk \\.\PhysicalDrive#

For Linux:

VBoxManage internalcommands createrawvmdk -filename ".vmdk" -rawdisk /dev/sda

For Mac OS X:

VBoxManage internalcommands createrawvmdk -filename ".vmdk" -rawdisk /dev/disk#

This VMDK will be a very small file that simply points to your physical drive. Now you can attach the VMDK to your VM. To do so, open the VirtualBox GUI, select the desired VM, click Settings, clickStorage, click Add Hard Disk button, select Choose existing drive, and then select the VMDK file you just created.

AI Downs Expert Human Fighter Pilot in Dogfight Simulations. Every Time.

AI Downs Expert Human Fighter Pilot in Dogfight Simulations. Every Time.

It is not just that AI’s are doing complex tasks, it’s that they increasingly doing complex evaluative tasks better than the best humans in the whole world. These AI’s can be written by a few (or just one) persons using off-the-shelf compute. This makes it available to almost anyone – at prices far below the price of an average yearly employee salary.

‘A pilot A.I. developed by a doctoral graduate from the University of Cincinnati has shown that it can not only beat other A.I.s, but also a professional fighter pilot with decades of experience. In a series of flight combat simulations, the A.I. successfully evaded retired U.S. Air Force Colonel Gene “Geno” Lee, and shot him down every time. In a statement, Lee called it “the most aggressive, responsive, dynamic and credible A.I. I’ve seen to date.”‘

There’s a lot going on here. A computer should be able to defeat a human pilot due to its lack of concern about excessive G forces and other ‘wet-ware’/human factors. It can take advantage of the full capabilities of our modern strike craft (such as sustained dozen+ G turns) without an concerns of blacking out or loss of cognitive powers.

But there are other serious considerations.

Ease of Creating Systems better than the Best

We see that a single doctoral graduate at a public university was able to create something from commercially available hardware using well published/studied fuzzy logic algorithms that is able to beat some of the world’s best pilots. Consistently. With a little work, in theory, this could be plugged into a real jet and it could take out a good portion of the US, or any other, Air Force. It’s not science fiction – it’s doable by anyone in the world today with the desire and a jet. That puts this easily in the realm of all the superpowers, and even into the hand of a number of 2nd world dictatorships. The compute power, the algorithms, and everything except for the jet are available to you and I today.

The logical response is to then develop AI’s that can fight the other AI’s. This leads to an arms race where humans are not even a part of outside of the tricky work of training and writing the statistical training for the AI’s. Now we have autonomous weapons of war, armed for combat, fighting each other in which people would no longer be able to compete against. The ramifications of this are somewhat staggering – all the way up to a SkyNet style apocalypse. I would recommend the book “Killing without Heart” by Shane Riza for more on this topic.

Social impact

In just the last few years, we’ve seen the rise of IBM’s Deep Blue ravage Jeopardy and defeat chess grand masters. Google AI defeated the Go world champion numerous times. On the commercial front, the rise of Siri/Google voice and other systems that use AI techniques to recognize speech and context get better and better each day. Self driving cars are already becoming a reality and may replace all taxi systems. The US Postal system already uses machines that operate on 30,000 letters per hour (8 letters/second) and have eliminated rooms full of people. What’s surprising is that a lot of these feats are done with machines that only cost about the salary of a single employee for a year.

The ever increasing pace shows us this is becoming widespread and is rapidly being adopted by wide sections of industry. Cloud companies are already in place selling the compute for pennies (Google I/O just announced it is releasing it’s AI systems for super-low prices of just $10/mo). As it replaces big pieces of our day to day lives, it is going to be a profound impact on our society – much like the industrial revolution. It’s not that we can (or should?) stop this development, but these technologies are going to have an even bigger impact than the internet. With that, there are a lot of things to considered with each new development if we wish to avoid to social disasters that plagued the late 1800’s and early 1900’s. It would really be good for us to start thinking about these issues before they become serious problems.

Machine Morals

To that end, we see people already working on imbuing machine learning with morals. We got our first view of how wrong things can go when Microsoft had to shut down it’s Twitter AI Tay after just 24 hours when it started spouting racism, denied the Holocaust, and worse. We also saw a AI controlled robot mysterious escape from a lab – twice. We cannot ignore that these systems will do unpredictable and unexpected things.

So, in the end, we have massively trans-formative technology entering our society. It’s probably a good idea to realize these things are not ‘if’, but ‘when’ realities that will come in our lifetimes. Maybe we should start talking about how we want to live with them in the new world it will create.