SBL Hebrew Font

The Society of Biblical Literature has made available a beta version of their SBL Hebrew Font. It’s a very clean, versatile Unicode font:


It’s distributed in OpenType TTF format, designed primarily for Win2000 and later, but you can also use it on MacOS X. However, since MacOS X (even version 10.3) does not yet support complex script (i.e. Hebrew) rendering as well as Windows does, your mileage may vary.

My Yahoo! RSS

After 2-3 years of stagnation, My Yahoo! has finally done something interesting. They have added a hosted RSS aggregator feature to the site.

For the time being, I’ll still probably stick to using like Radio Userland better, because it organizes articles by date (regardless of source) and My Yahoo! is very source-centric. However, I’m hopeful that My Yahoo! will improve over time, including the ability to show full content of RSS feeds with inline images.

Add this blog to My Yahoo!

Current Reading List

Fast Food Nation: The Dark Side of the All-American Meal I’ve been in more of a reading mood than a writing one recently.

Just finished reading

In the middle of reading

Just starting to read

Hope to get around to reading

Amazon is finally making a profit on me.

Threads considered harmful

In the past month I’ve seen at least 3 messages on the development email lists at work asking questions about developing multi-threaded applications. From a software engineering standpoint, this troubles me.

I’ve always thought that multi-threaded apps in C/C++ are simply too difficult for most engineers to understand. There’s too much non-determinism, too many race conditions, and too few language-level constructs to keep yourself from screwing up.

This isn’t to say that some engineers can’t figure it out, it’s just that most engineers can’t. I’ll borrow a diagram from Ousterhout to illustrate this point:

What's Wrong With Threads?

John Ousterhout, Why Threads Are a Bad Idea (for most purposes), 1996. PDF slides from USENIX 1996 talk (local mirror).

I’ve been reading The Art of UNIX Programming by Eric Raymond over the past few weeks and it appears that he agrees with me. He avoids the Dijkstra-esque pun on threads being harmful and instead perfers the equally-provoking title Threads — Threat or Menace?

My attitude about threads Java is different because the language has supported the concept of threads since day one. It’s still tricky to do threads correctly in Java, but not as painful as it is in C++.

Mozilla LiveHTTPHeaders

Today (thanks to Jeremy and Rasmus) I learned about a tool that I never knew I needed but now can’t live without: Mozilla LiveHTTPHeaders.

I’ve been debugging HTTP for years using trusty text-based tools like telnet and nc, but today a quasi-technical person stopped by my cube to ask for help with a caching problem and they really needed a GUI-based solution.

LiveHTTPHeaders lets you open up a separate window or tab to display HTTP headers in real time (while pages are being downloaded from various websites). It makes it pretty easy to see the various caching headers (like Cache-Control, Expires, and Pragma) and also follow trails of 302 redirects, Cookies, etc.

It also adds a cute Headers tab to the Page Info dialog box for information about the currently active page:


Absolutely brilliant. Probably something I’ll use at least once a week.

Yahoo! Year in Review

Here’s my own personal Yahoo! Year in Review (i.e. the highlights of my job in 2003):

  • In January, I started my new role as an Engineering Manager, leading my own 3-person team. The change of job responsibilities was just the thing to get me charged up about work again.
  • A month later I finally got rid of my home office and started working in Santa Monica at the Yahoo! LAUNCH office.
  • In March I got the good news that my Targeted Advertising Patent application had been published by the U.S. Patent and Trademark Office. We submitted the application back in the Fall of 2001, but it takes the USPTO a long time to review these things. Hopefully the patent will issue in 2004.
  • That same month I got news from my boss that my group (developer tools and core software infrastructure) was going to be growing in size. We started interviewing candidates, and by the beginning of August my group had grown from 3 to 7 engineers.
  • In July, I spoke at OSCON 2003 in Portland. I got to have a beer with my buddy Sam Jackson who I hadn’t seen in about 5 years, and I met a few cool folks like David Sklar and Adam Trachtenberg.
  • I spent a good deal of time in July and August training Andrei and Ryan, the two newest members of my team.
  • I gave my “One Year of PHP at Yahoo!” talk at PHPCon West 2003 in Santa Clara. This conference was more schmoozing than sessions; I spent quality time with Ze’ev, Rinat, Zak, George, Sterling, Thies, Shane, James, Luke & Laura, and local Yahoo!s Andrei and Brian. I also met Brian from Microsoft, who seemed like a really nice guy.
  • I spent most of the remaining part of the year working on annual performance reviews. It was amazingly difficult and time-consuming, but I’m hopeful that it was worth the effort. The opportunity to reflect upon my group’s work over the past year made me proud of our accomplishments.
  • As a result of my new people-management job, I didn’t manage to write too much code this past year. Our CVSdb checkin database shows that I added 7,257 LOC to the codebase this year, compared to 21,928 LOC in 2002.

There is only an hour and a half until the New Year, so I think that’s enough for 2003.