Miscellaneous and Useless Information

KCBS just changed their tagline, emphasizing their FM instead of their AM station: “106.9 and AM 740”. I bet this will cause the anchors to slip up from time to time.

I don’t blog much anymore, but for posterity’s sake: KCBS Radio has been slowly switching over to a new set of jingles over the past two weeks (at least). The last pieces fell into place today, with a new jingle for John Madden and a new intro after CBS News at the top of the hour. They’re a little punchier than the old ones, but it’s still the same four-note sequence they’ve been using for decades.

I searched on the web for more info and came across my old blog post on a previous time KCBS changed its jingle, in 2004, which I had completely forgotten about! In between, KCBS also changed them in 2008, when it started simulcasting on 106.9 FM.

I’ve seen my other friends do this, on the advice of Newtown High School teacher Lash Ashmore, so here goes…

Hi, I’m from Newtown, Connecticut.

Newtown has modern conveniences — supermarkets, Starbucks, an Interstate highway. But it also has small-town charm. People go to the Town Hall to watch movies for $2 and buy sandwiches at the General Store next door. The landmark is a gigantic flagpole where two busy state roads intersect. There’s only one fast food chain restaurant in the entire town. Two schoolteachers honored the town’s history by rebuilding a historic inn, 23 years after it was destroyed by fire. The ice cream shop of choice is called The Ice Cream Shop, and when it closes for the winter, it simply hangs up a sign that says, “Gone Fishing.”

When I last visited Newtown, I not only met up with my friends, I also visited my teachers at my elementary and middle schools. Most of them were still there, and they still remembered me, 12 years after I had moved away. I ended up talking with Mr. Bird’s class, explaining why computers crash and teaching a few Chinese characters. I’m not sure when I will be near Newtown again, but when I am, I will visit.

And to Mr. Bird’s class of 2001: “guinea pig” is 豚鼠.

Ariel Hsing has had a great run at the Olympics as a member of the U.S. table tennis team. She was the only American to make it past the first round, she upset a former world champion in the second round, and she pushed the eventual gold medalist to the limit in the third round before losing in six tight games. And she’s friends with Warren Buffet and Bill Gates.

Did I mention she’s from the San Francisco Bay Area and is only 16?

Here are some thoughts for students who are considering computing, including computer science and software engineering, as a career. While these tips are particularly geared for high schoolers going to my alma mater, Monta Vista High School, they can apply to many others.

What do I enjoy about computing?

Computers are capable of doing amazing things, but in reality, they’re really dumb. You have to give them precise instructions on how to do something. If you get it wrong, they can’t guess what you want them to do. I find taking a task, breaking it down into smaller pieces, writing instructions to do those small tasks, and putting it all back together inherently satisfying. You get a sense of mastery by getting a sophisticated piece of equipment to do what you want it to do.

I also enjoy the fact that my work has a direct impact of millions of lives. Every time someone searches for something on Google, code that I have written is executed. I certainly feel like I am making a difference.

My typical workday

As a software engineer at Google, my day is not just about sitting in front a computer monitor, pounding out “code” (the instructions that tell the computer what to do). The image of the solitary hacker is a myth.

Before writing any new code, I need to consider how it will work with code that Google already has. It’s like building a structure — you could slap your addition onto an existing building, but that could destabilize the whole structure. Or you can carefully design your addition so that it integrates well with what is already there.

So I will meet with my colleagues to discuss the problem I’m solving and how I intend to solve it, either face-to-face or through e-mail. I may also write a design document that gives all of us one document to refer to.

Sometimes I write code with a colleague, especially if the code is tricky. This process, called pair programming, lets one person type while the other looks up documentation or spot errors on the fly. It can be intense but also more fun, since you’re sharing your joy (and pain) with someone else. It also reduces distractions, since you can’t check your e-mail while your partner is waiting.

Once I’m done writing a piece of code, I then need to integrate it with the existing code. But before I can do that, another software engineer must review the code that I wrote. He or she may (and probably will) point out bugs that I need to fix before integration. I also review the code of other engineers.

Our project team has short status meetings everyday, which last five to ten minutes. Our larger group has status meetings every week, which often last only fifteen minutes. I also attend other one-off meetings about design issues that affect our whole group, and I answer questions that other engineers may have about the work our team is doing.

So a lot of time is spent designing, reviewing, and communicating my ideas with others, not just programming.

Now you’re interested in pursuing computing as a career. How do you start?

Before College

A straightforward way to try out computing is to take AP Computer Science in high school. Since the test uses the Java programming language, you may want to also take the Java programming class that Monta Vista offers, the year before taking AP Comp Sci.

However, suppose you don’t find either the Java class or the AP Computer Science class that interesting, but you’d still like to explore computing. Don’t give up! There are plenty of alternative approaches to learning how to program, a fundamental skill in computing (but not the only one), which you can try on your own. You can also try these before going into AP Comp Sci.

Instead of Java, you could choose another language like Python, which has many conceptual similarities with Java but is less verbose. There are a few tutorials for learning how to program using Python, such as A Byte of Python or Learn Python the Hard Way (I have not tried either of these myself).

There is also an interactive website for learning how to program called Codecademy.

If you’d like to learn programming in the context of a more visual and dynamic environment, Processing is a popular language for creating visual art and animation.

There are several other systems that lets novice programmers create games and visual simulations. These include:

The key is to try these out, experiment, and have fun with it. It will take some time and persistence, but the rewards are well worth it.

By the way, you still have to pay attention to your other classes. Besides math and science, writing and speaking are the most useful skills in your career. If you can’t get your point across to your colleagues, your great ideas will never be accepted.


There is widespread agreement on the top four computer science university programs (in no particular order): Carnegie Mellon, MIT, Stanford, and UC Berkeley. However, there are plenty of great CS programs all over the country, including (but not limited to) Brown, Caltech, Cornell, Georgia Tech, University of Illinois at Urbana-Champaign, University of Texas-Austin, University of Washington, and University of Wisconsin-Madison. It’s hard to go wrong with any of them, so you should also pick a college based on your own personal preferences, such as small liberal arts school versus large research institution.

There are many different ways to teach computer science. For example, Carnegie Mellon, Harvey Mudd, and Georgia Tech design their programs to attract and keep women and underrepresented minorities to computing, which the field desperately needs.

No matter where you go, I highly recommend doing summer internships. These are becoming more and more important for getting a job after college, or for getting into graduate school. Internships expose you to how different companies operate and give you some real world experience.While I was in college, I did two summer internships (IBM and Microsoft).

If you’re considering graduate school, I also recommend doing undergraduate research work if your university offers the opportunity. For example, Caltech has Summer Undergraduate Research Fellowships.

Graduate School

Unlike other science and engineering fields, getting a Master’s or PhD degree in computer science does not automatically mean you will be earning more money or have higher job status than those with a Bachelor’s degree. However, attending graduate school, especially a PhD program, gives you different types of opportunities than a college graduate.

Getting a PhD in computer science means you want to deeply explore a specific topic within a specialty of computer science. This means that the school you will apply to will depend on what specialty you want to go into, such as artificial intelligence or operating systems. For example, the University of Wisconsin-Madison has an excellent program in databases but is not a great choice for human-computer interaction.

By the time you get your PhD, you will know lots of leading figures in academia and industry in your specialty. Networking becomes a key skill that you learn. You also learn how to figure out what questions are still unanswered in your field, and address it in a way that no one else has before. It sounds a little daunting, but that’s what graduate school is for.

In fact, throughout graduate school you come to realize that there are lots of questions out there, and the real problem is how to pick a problem that you can reasonably answer in a few short years, so you can graduate. Persistence and endurance, more than sheer intelligence, is the key to getting a PhD.

Once you have a PhD, you have the opportunity to get a job where you can look farther out in the future than most people, especially if you become a professor or join a research lab at a company like Microsoft or IBM. These jobs are nearly impossible to get without a PhD. But at the same time, you will become “overqualified” for jobs that only need a Bachelor’s degree. So getting a PhD changes your opportunities, but it doesn’t necessarily broaden them.

Give it a shot

I hope you consider computing as a career. It’s rewarding and satisfying in its own way, and the fact that it’s also in high demand is just a bonus. Even if you decide to do something else later, the skills you learn in computing will serve you well. Good luck!

Since I’ve been to New York City several times for business, I thought I’d pass along some tips.

If you’re in New York City for a week, I would highly recommend getting a 7-day Unlimited MetroCard ($29). A single ride is $2.50, so just two trips a day makes it worthwhile.

However, you can’t use an Unlimited card at the same subway station for 18 minutes. This can be a problem if you use a subway station entrance that allows you to go in only one direction, and you pick the wrong one. So instead of exiting and re-entering in the right entrance (which will lock you out), just get on the next train and go to a stop that lets you cross over. (I found this out the hard way; only the persistence of my traveling companion got us in.)

If you’re flying into JFK Airport, I recommend taking the AirTrain to Jamaica Station. Once you get to the station, you’ll see a set of fare gates and banks of MetroCard machines on either side. You’ll need to get a $5 MetroCard just to leave the AirTrain system, so you’ll have to buy that before the fare gates.

But you can’t buy a 7-day Unlimited MetroCard at either of those banks of machines. Instead, proceed to the subway station at Jamaica (which, by the way, is called Sutphin Boulevard–Archer Avenue–JFK Airport, not Jamaica) and buy a 7-day card at its machines. From there, you can take the subway (E line) all the way into Manhattan. It will take about an hour.

If you want to spend a bit more money to save time, you can also take the Long Island Rail Road from Jamaica to Penn Station in Manhattan, which takes 30 minutes. If it’s the weekend, buy a CityTicket for the LIRR, which only costs $3.75 (a regular ticket is $8.75, off-peak $6.25). You can buy LIRR tickets at the ticket machines before the fare gates at Jamaica.

Enjoy your trip!

In my previous blog post, I noted my surprise and distaste for the term “Pasteboard” over “Clipboard” in Mac OS X. It seemed like an unnecessary change in terminology. However, a friend and long-time Mac user later pointed out to me that OS X still calls it a Clipboard, for example, Edit→Show Clipboard in the Finder. In fact, he had never heard of a Pasteboard until reading my blog.

This encouraged me to dig a little deeper. The term “Pasteboard” was inherited from Mac OS X’s ancestor, NeXTSTEP, which used it in its user interface (see The Complete Guide to the NEXTSTEP User Environment for an example). “Pasteboard” is still used in Apple’s documentation for programmers. However, while NeXTSTEP may form the technical foundation for OS X, the classic Mac OS, which always used the term “Clipboard,” is the basis for Mac OS X’s user interface, so “Clipboard” has mostly won out.

So why does the X11 application use the term “Pasteboard”? I can only speculate that the X11’s developers wanted to the distinction between X11’s CLIPBOARD and OS X’s Clipboard as clear as possible, and that computer geeks, who are likely the only ones who would use X11 in the first place, would be familiar with the term.

Last night, I worked on an SVG file that Caitlin Kelleher had created with Inkscape (for the cover of the proceedings of VL/HCC 2011). I also used Inkscape, but it took a few tricks on my Mac to get it to work properly.

  • I wanted to use Helvetica Neue for all of the text, but it wasn’t included in Inkscape’s Fonts drop-down list. I had to copy the font from /System/Library/Fonts to /Users/my_username/Library/Fonts for Inkscape to load it. None of the other fonts in the system folder had problems loading.
  • I also could not use Helvetica. Whenever I chose it, Inkscape kept switching me to Sans. I never figured out what was wrong.
  • I tried to copy some objects from one Inkscape window to another, but the pasted objects were converted into a bitmap. This is because X11 synchronizes its CLIPBOARD and PRIMARY buffers with Mac OS X’s Pasteboard* as much as possible, and something got lost in translation. I turned off the synchronizing by going to X11 → Preferences… → Pasteboard tab and turned off Enable Syncing.
  • I wanted to import an EPS file which contained vector graphics, but Inkscape can’t import EPS files directly. Instead, I opened the file in Preview and then saved it as a PDF. Inkscape then imported the PDF perfectly.

Hopes this helps others using Inkscape on a Mac!

* The clipboard on Mac OS X is called a pasteboard? Bleh!

Just one day after his keynote at Apple’s Worldwide Developer Conference, Steve Jobs made an appearance last night at the Cupertino City Council to present the company’s plans for a new campus in Cupertino, on the old Hewlett-Packard site. It essentially consists of one giant building shaped like a doughnut that will hold 12,000 people. It will be surrounded by open space, and the parking will be mostly underground.

While the plans certainly make a statement, I’m more an urbanist and not usually fond of buildings surrounded by lots of parking lots or open space, since they don’t tend to be very energetic spaces. So I’m actually lukewarm on what I’ve seen so far. I’m also left with a lot of questions:

  • How accessible will the open space be to the public?
  • In the slides that Jobs presented, Pruneridge Avenue disappears. Where does it go? Is it eliminated? Does it go underground? Does it become a private street, serving only the underground parking garage?
  • What are the plans for the existing redwood grove and the historic Glendenning Barn?

I’m sure that the final result will be pretty close to what was presented — I can’t imagine Cupertino giving Apple a really hard time. And even though it would still be a corporate office park instead of a more urban neighborhood, it would be a really nice office park, better than what is there now. By the way, I grew up in Cupertino and I still live nearby, so I know the area very well.

And I echo Mayor Gilbert Wong’s desire to open an Apple Store in Cupertino. Too bad the city’s Vallco Mall is such a basket case.

  • Buxton: Jobs revived Apple with people already employed there, such as Jonathan Ives. The culture needed changing, not the people. [original tweet]
  • Gerken et al present method called Concept Maps to elicit developer’s mental model of API. A related resource: apiusability.org [original tweet]
  • Missed Wrangler (creating data transformation scripts interactively), but saw Jeff Heer’s BayCHI talk on it. Good stuff! [original tweet]
  • Substance introduces data-oriented paradigm: data is tree of nodes, facets are behavior that can migrate from node-node [original tweet]
  • Shared Substance is a framework on top of Substance for multi-display apps, supports service-oriented and shared state. [original tweet]
  • For lunch: Japanese-style hot dog (Kurobuta pork, mayo, teriyaki, seaweed) and shio ramen. Made possible by not eating breakfast. [original tweet]

Ethan Zimmerman’s closing plenary: Desperately Seeking Serendipity

  • People move to cities partly because it’s less boring and there’s more choice [original tweet]
  • Cities seem to provide more chances for serendipity, but people tend to stick to others similar to them (homophily) [original tweet]
  • Media consumption also very local. >90% read media in their own country. Leads to Tunisia revolution not well covered. [original tweet]
  • For serendipity, people must be prepared to take advantage of chances, and structures should be in place to create them. [original tweet]
  • What lessons about serendipity can we learn from cities and apply virtually? [original tweet]
  • Worth reading the “extended dance mix” of Ethan Zimmerman’s keynote. Only problem: you can’t hear him deliver it. [original tweet]

And finally:

  • Nirmal Patel: “Updated online CHI program so each paper has a link to the ACM DL page.” [original tweet]

Next Page »