Looks like Valve got pretty well buggered. Gabe Newell:

Ever have one of those weeks? This has just not been the best couple of days for me or for Valve.

Yes, the source code that has been posted is the HL-2 source code.

Here is what we know:

1) Starting around 9/11 of this year, someone other than me was accessing my email account. This has been determined by looking at traffic on our email server versus my travel schedule.

2) Shortly afterwards my machine started acting weird (right-clicking on executables would crash explorer). I was unable to find a virus or trojan on my machine, I reformatted my hard drive, and reinstalled.

3) For the next week, there appears to have been suspicious activity on my webmail account.

4) Around 9/19 someone made a copy of the HL-2 source tree.

5) At some point, keystroke recorders got installed on several machines at Valve. Our speculation is that these were done via a buffer overflow in Outlook’s preview pane. This recorder is apparently a customized version of RemoteAnywhere created to infect Valve (at least it hasn’t been seen anywhere else, and isn’t detected by normal virus scanning tools).

6) Periodically for the last year we’ve been the subject of a variety of denial of service attacks targetted at our webservers and at Steam. We don’t know if these are related or independent.

Followup thread pinpointing the leaker?

What I really need is a blog-all tabs popup/bookmarklet…

(Update: Jesse let me know that bookmarklets can’t look at other tabs, although it might able to cycle through tabs… Will have to look into it; Maybe needs to be a XUL extension? Where in the Moz DOM is the tab info stored?)

  • Efficient Editing With vim – best laid out/organized vim tips summary I’ve seen

    Recording ad-hoc macros:

    qregister Start macro recording into the named register. For instance, qa starts recording and puts the macro into register a.
    q End recording.
    @register Replay the macro stored in the named register. For instance, @a replays the macro in register a.

    Handy code writing keys:

    ]p Just like p, but it automatically adjusts the indent level of the pasted code to match that of the code you paste into. Try it!
    % Putting the cursor on a brace, bracket, or parenthese and pressing %
    will send the cursor to the matching brace, bracket, or parenthese.
    Great for fixing parse problems related to heavily nested blocks of
    code or logic.
    >> Indent
    the highlighted code. (See the earlier section about efficient text
    selection. If no text is selected, the current line is indented.)
    << Like >>, but un-indents.
    gd Go to the definition (or declaration) of the function or variable under the cursor.
    K Go to the man page for the word currently under the cursor. (For instance, if your cursor is currently over the word sleep, you will see the man page for sleep displayed.)
  • Dr Chip’s Vim Page
  • Luc Hermitte’s VIM Macros
  • Kent’s Vim Page