I am also totally done with Google - it's just not worth 4 months of runaround and countless phone interviews just to come in and fail because one of the interviewers hates the whole process. And last time they contacted me, they told me to learn either Java or Python and call them back when I did. No thanks. Nothing against Python, but I am not putting that much effort into the chance at another interview. I would totally work for a company that did Python, and learn as I go - I've done that plenty before. (Edit: Oh, and the number of interviews google puts you through just should not be allowed)
I spent a year working on my own startup, which is what got me into rails, but it ran out of runway and I was then tied to the area by romance, and got a mediocre job at a huge company. I am no longer encumbered, but my resume lacks any recognizable names (of schools or companies). I've had a lot of other personal projects that never went anywhere and which earn me no points, but at least keep me in the game. (I should have put them all on GitHub, I suppose, but was too embarassed about their unfinished nature to do so).
I also don't get what the obsession is with CS 201 questions. But I keep my data structures textbook around just so I can relearn how to implement A* or remind myself what the big-O of a B-tree delete is before interviews. Of course, at Google I'd need to be implementing these data structures daily(?). I don't have a big problem with them, it's just an odd thing to be obsessed with.
2. Put the rest of the stuff up on GitHub, with suitable disclaimers, e.g. "I was working on this to learn X ..." Everyone understands (well, everyone I like understands) that creative people have lots of projects in various stages of disarray.
3. Target a few small/midsize startups, not the super-hot ones, and spend 1-2 hours to learn their product. I would be THRILLED to get an email from someone who said "I love what you do, here's three things I would like to work on with you to make it better, are you hiring?"
4. Put up front your willingness/unwillingness to relo. If you have remote working experience, give an overview of that. "Worked remotely for company X for two years, with daily standups, weekly sprint meetings, monthly 3-4 day visits, and two visits of 2 weeks duration 2x/year." That lets me know what you're up for.
What's your company? I'd love to send you that kind of email. :) (My email should be in the HN profile)
My experience tells me that this talent war exists... for the top few percentile of engineers. Where these people are dogged by recruiters and companies alike, there is a sharp dropoff; engineers who are smart but don't win in a tech bingo interview or didn't work at Google/Facebook or didn't go to Stanford get pinged by headhunters but passed over by companies. Engineers who have held jobs at start ups or less prestigious companies, who have authored plenty of CoffeeScript or ObC code for a corporate code base but don't remember how to implement a quicksort or don't have experience with framework x are rejected in the interview phase.
It's my opinion, but I think the "shortage of talent" is really a shortage of patience and mentorship, and a sign of the complete unwillingness of many companies to take a risk on someone.