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:

http-headers.gif

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