Stupid Computer Errors: Black Screen on Startup

This evening my wife’s computer was being annoying. It would start up normally, display the Windows 7 splash screen, and then go completely black except for the cursor, which would move around normally. Control-Alt-Delete and Control-Shift-Escape did nothing.

Restarting in safe mode, I was able to get into the Task Manager, determine that explorer.exe was not running, and start it . So that defines the problem, but why was explorer.exe not running on startup?

A Google search pointed to a registry issue. There are a couple of keys that can (somehow) get messed up and will then keep explorer from starting. Both are in the HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon folder; however, I saw one person say that he needed to do the same fix in HKEY_CURRENT_USER.

The key “shell” needs to be set to explorer.exe and the key userinit needs to be set to userinit.exe. Checking the registry, I found that shell was fine but userinit had somehow been set to “C:\Windows\system32\userinit.exe,” (with a comma at the end); resetting it to just “userinit.exe” fixed the issue.

Interviewing with Microsoft and Epic

For a while now, I’ve been meaning to write about my interview experience with Microsoft last year; since I interviewed with Epic recently as well, I figured I’d talk about both of them. I will not be disclosing the interview questions (and will delete any comments asking what they were), just the general format of the interviews.

I found out about the Microsoft ones when CSU sent out an email asking for students who were interested in applying for a job working on Bing maps, which are developed in Boulder. The interview at CSU was pretty short: two questions! In each case, you had to psuedocode out an algorithm to solve a problem, improve it to linear time, and implement it in the language of your choice. Simply solving each problem was simple enough, but getting it down to O(n) required a bit of insight. In fact, the interviewer told me that most people didn’t get past the first problem!

Although he said that I was the best interview he had that day, he still gave me their recommendation to read Programming Interviews Exposed, which I promptly picked up from Amazon; he said that most of their questions are variations on what’s in the book. While I knew most of it already, I thought it was a great review of basic concepts (linked lists, trees, heaps, concurrency, etc) and recommend it strongly to anyone wanting to brush up on standard algorithms.

I was told they’d contact me quickly to set up an on-site interview, but it actually took over a month. I had a full day of interviews, each of which (except the lunch interview and the final interview) involved working through a reasonably complex programming problem. At the end, I was told by the last person I talked to that they felt I’d be a better fit in R&D rather than the codemonkey position they had open (not that they called it that, of course).

Then I spent the next two months ignoring requests to submit documentation to get reimbursement for my plane ticket to Boulder.. too bad they didn’t just offer to pay for gas!

Also last year, I ended up going to a CS job fair, where I gave my resume to an Epic recruiter. I’d never even heard of Epic and gave it no more thought until they emailed me for a phone interview. I’m not fond of those – since I don’t hear well, phone interviews don’t normally go well for me – but I spent about 45 minutes talking with one of their people, not really expecting anything to come of it.

A few days later I  got an email that they’d like me to continue through the process and would be sending a test to CSU for me to take. Unfortunately, that test never showed up, so a few weeks later they sent another one. The test format was simple: solve the programming problems in any language you like, including psuedocode. There’s no time limit, but you still have to record your time and it makes up part of your score. The problems start off very easy (I think I spent about 4 minutes on the first one) and get progressively harder; one of them was similar to a practice problem in the programming interviews book I mentioned above, which sped me up a little. I think the test took a couple of hours.

The school sent the test back to Epic, and a week later I got an email that they had received it and would contact me within two weeks if they were interested in moving forward. A couple days later, I got a voicemail from someone in HR letting me know that I’d be getting an email to schedule an on site interview.

I flew out on a Wednesday and spent Thursday morning interviewing. The process is set up largely so you can get an idea of what is expected; while there were four or five interviews, plus lunch, mostly it was people telling us about the company and their jobs, plus a technical interview with a coder and a final interview with HR. At the end of the interviews were three more tests: a 60 second test where you had to answer as many questions as you can before time ran out (I just barely got all twenty), a math test, and a programming test using a fictional programming language. Epic makes a big deal about GPA (they claim to want, IIRC, a minimum 3.2/3.5/3.7 for undergraduate/graduate/postgraduate work) but I suspect it’s the tests that make the biggest difference in you getting an offer.

After that, I had a few hours free to explore the campus (which is beautiful – I plan on taking some photos once I have a little free time) and told me I’d hear back from them one way or another within the next two weeks. When I woke up on Monday I had an offer waiting for me, and I started at the beginning of January.

Easy WAMP

As I mentioned before, one of the books I’m reading this month is about PHP, MySQL, and Javascript. One minor annoyance when working on server-size scripting is, of course, the need for a server. True, if you’re a student it may not be that much of a hassle to ssh in to the lab computers, but it’s still one more step, plus you may end up making things publicly available without intending it.

Personally, I want to work on my own computer with the tools I have installed here; at the moment that’s a Windows 7 machine (although I’ll be booting up linux later to play with Google Go). Fortunately, it’s pretty easy to set up a WAMP  (Windows Apache/MySQL/PHP) and do everything locally. Right now I’m using EasyPHP; it’s a simple install and makes it easy to start and stop Apache and MySQL as needed.

XKCD comic
This has been fixed, but the point remains.