Thursday, July 09, 2009

ImportError: No module named django.core (fun with Windows)

I just spent 45 minutes tracking this down, hopefully if I post a trace here, others will be able to resolve the issue more quickly in the future.

So I am building a little django app at work, but my latest installed version of django is pre-1.0, so why not upgrade, right?

After getting everything downloaded and running setup.py, I did the standard thing to start a new project:

C:\Users\jtb\Documents\Clickable\src>django-admin.py startproject myproject
Traceback (most recent call last):
File "C:\Python25\Scripts\django-admin.py", line 2, in
from django.core import management
ImportError: No module named django.core

All the search results on that error pointed to issues with my PYTHONPATH, but no amount of tinkering with it would make django actually run.

The real problem was that, due to a recent installation of Python 2.6, my PATH and my PYTHONPATH had fallen out of sync. My PATH was pointing to the Python 2.5 directories, while my PYTHONPATH was pointing to the 2.6 directories. It seems the Python installer I used knows how to update PYTHONPATH but not PATH. Which makes sense.

If you found this post through a web search and it helped you debug a similar issue, please post a comment.

Friday, September 19, 2008

Xoogler Tip: What happens to your email after you leave?

For all you Xooglers out there, here's a little tip to smooth the transition outside of the 'plex.

When you leave Google, your existing mail account becomes a black hole - all mail sent to the address silently goes away.  There's no bouncing or auto-responder.  No big deal, right?  Anyone at Google can probably get your new address off go/epitaph.

BUT: If, like me, you worked with anyone outside of Google (for example, patent attorneys), they might not know about your departure, and they can haplessly send email into the black hole for months without discovering that you're not there any more.  I found this out recently when a lawyer who had been trying to reach me all summer finally found out that I had left the company.  

Simple fix: before you leave, you can file a ticket to have an auto-responder set up.  If you've already left, your HR Business Partner can help you out.

Friday, May 30, 2008

Happy Anniversary to Me!

I've been awfully silent for the past little while, and for no good reason, really. But today is my 1-month anniversary at my new company, Clickable, and I thought I'd take this chance to share a little about this transition.

Clickable is an exciting place; we are building a software-as-a-service offering for people who want to manage their online advertising in a single, simple interface. So if you are advertising with Google, Yahoo, and MSN, you can learn all of those products and spend time in all three of them managing and optimizing your accounts, or you can just log in to Clickable and do all your work in one spot. The team at Clickable is immensely talented, and the product has real customers who find our product to be a big advantage over the services offered from the ad networks.

I'm proud to say I have definitely found what I was looking for by leaving Google for a startup: tons of responsibility, the opportunity to have a major impact on a company, and the chance to learn a lot of new skills. It's given me an enthusiasm for my work that was sorely lacking towards the end of my time at Google.

I'm working as a semi-specialized engineering jack-of-all-trades. My main focus is our optimization engine, which tells customers how to tweak their accounts for the best advertising results. But I'm also working on a broad swath of other tasks, such as setting product direction, production firefighting, integration testing, customer analytics, and even a dash of business development. Most importantly of all, I am hiring for talented engineers. If you think the startup life is worth a try, leave a comment or shoot me an email.

Friday, May 02, 2008

What am I doing wrong with Reader off-line mode?

I'm temporarily commuting with a laptop that has no WLAN device, so I've been using Google Reader's off-line mode for the last couple days, and I've noticed the following oddness.

I start out with a giant backlog of unread feeds, a la:


(Sorry for the quality of the screenshots in this post; if you click through to the original image on any of these, you should be able to see the folder counts clearly).


I synchronize to go off-line:



Once that's complete, all my folders show fewer unread items than before, such that my total unread drops from "1000+" to 580:



Such rapid progress! Until I go back on-line again:



And now I'm back to "1000+".

Anyone on the Reader team care to comment on this one?

Friday, April 11, 2008

Today is my last day at Google

After nearly five years at Google, I am leaving the company, effective at the end of the day today. My time at Google afforded a tremendous number of opportunities; I was able to take part in growing the company's first remote engineering office from 5 engineers in 2003 to nearly 450 today, I was able to conduct blue-sky exploration of applying Google's data and computing infrastructure to web information extraction, and, more recently, I was able to help build an all-star team that just shipped Google Ad Manager.

Contrary to what glowing articles in Fortune or Fast Company might tell you, the best part of working at Google has nothing to do with the free meals, subsidized massages, or even the stock options. The best part of working at Google has been the chance to collaborate, to innovate, and to explore with the most talented collection of people I could ever imagine. Missing those people every day is the hardest part of leaving this company.

I don't know yet what my next challenge will be, but I hope to go somewhere very small and take part in building a company from the ground up. Wish me luck!

Monday, March 17, 2008

Followup: which skills to list on your first resume

Over at techinterviews.in, they've picked up on my recent series about writing your first resume and posted some good comments, including:
There’s nothing like picking a language or operating system or database management system that a candidate listed towards the end of his resume, and having an interviewer, who’s the expert in the field (”Ah! So you did Nintendo DS assembly programming, too! Let’s discuss this in detail!”) then discover that the knowledge of this listed tech is, to say the least, limited. It makes the whole resume look like a creative writing projects, the aim of which is to specify as many buzzwords as possible.
I do advise undergrads to be a little liberal in listing technical skills, and I want to take the time to explain that a more clearly.

Here's an example from my own experience. One of my undergraduate research jobs was with a research group studying human cognition, primarily via a cognitive modeling system built in LISP. I joined the group in my sophomore year and stayed on through graduation, during which time I wrote several hundred lines of LISP glue code to manipulate my models and experiments. By the time I was interviewing for jobs, I was very comfortable writing complex LISP code and tackling problems with a functional approach. However, I knew very little about the overall design of the language or some of the important big concepts like CLOS. But I still listed LISP on my resume.

I recently had cause to write some LISP code for the first time in 10 years, and I was still able to work effectively in the language. But I wouldn't even consider listing LISP on my resume these days, because it's far outside the core of my expertise.

On the other hand, my first research job in college involved writing a mix of Fortran and C code for a parallel supercomputing group. In the year or so I worked with that team, I probably wrote a few hundred lines of Fortran code, and it was ugly. In my senior year, I left Fortran off my resume - if someone had asked me to write even a line of Fortran code, I would have been helpless. In any event, I knew I didn't want to work for a company that would be excited by my experience with Fortran.

In brief, when someone fresh out of school lists a particular technical skill, my expectation is that it conveys less expertise than when someone 10 years out lists the same skill.

If you really want to be precise in listing technical skills, the best approach is to quantify your level of experience. Some people take the straightforward approach of listing the number of years they've worked with a technology. I find it more useful to communicate a self-assessment of your skill level, using phrases such as "expertise in ..." and "familiar with ..."

But if you're just coming out of your undergraduate program, list anything where you think you can speak intelligently about the technology. If an interviewer asks a question that goes beyond your expertise, admit it, and offer a quick description of how you've used that technology and what areas you're best suited to answer questions about.

Wednesday, March 12, 2008

The CS undergrads' guide to writing your first resume, part 3

Hopefully my first two posts in this series have given you a good idea about how to start your resume, and what to emphasize and downplay. By now you've got a good draft, and you've had it reviewed by a number of friends. What's next? Take a pass over this list and make sure you're not committing any cardinal sins.

Some resume mistakes are so bad that you must never commit them. Please. The ones that always set me off are:
  • Multiple pages. I've have reviewed hundreds, if not thousands, of resumes, and in all those examples I have seen only one multi-page resume come with a strong candidate behind it. All the other ones, the ones where people list every class project, or every club they've been in, or the names of all their teachers in high school? Worthless. Take the time to distill your education and experience into the points that can be expressed in a single page of text. If you can't get it down that far, hand a draft to one of your editors and ask them what's least interesting.
  • Spelling mistakes. See my earlier comments about having several other people read your resume before you share it with any companies you're interested in. When I see a really egregious spelling mistake, I will discard the resume completely.
  • Using the Microsoft Word resume template. First off, the template just doesn't look that great, and second, it sends the message "I just put this together in five minutes because that's about how much I care about your company. Please pretend not to notice." I accept that page layout can be hard, but if you can't create something that looks decent, ask a friend for help. The layout for my first resume came from a good friend who actually has a talent for these things, and I used it successfully for the next several years.
  • A non-CS undergraduate degree followed by a CS Master's degree from either (a) a no-name computer science program, of (b) a top-tier school that is known to be a diploma mill for anyone with the money to buy a degree. I'm not naming names here, but you know who you are.
Lastly, I just want to touch on the long-standing debate about whether or not to include an "Objective" at the top of your resume. In the modern era, most resumes are submitted directly for one or a small number of job openings, so I'm going to assume that your objective is to get hired for one of those positions. Including a comment in your resume to tell me you want a career like the one I have to offer you only wastes space that you could be using to tell me more about your background and expertise. I say skip the objective, but you can decide what works best for you.

Thanks for reading this far. If you found this guide useful, please leave a comment.