One non-obvious detail is that you can switch to another space by clicking an app’s Dock icon multiple times. If you click a running app’s Dock icon once, that app will activate in the current space. If it doesn’t have any open windows in the current space, it will activate without creating a new untitled window. But if you click that same app’s Dock icon again, you’ll jump to the next space in which that app does have an open window.

Hank Williams recommends that Twitter denormalize its database so that it can be split up:

In typical normalized databases you would want to store every message sent only once and not in two places as I suggest above. But while perfectly normalized databases make for “cleaner” databases, they cannot scale. Database purists often speak of the merits of normalization. And certainly some normalization is generally necessary. But in the new database world, a perfectly normalized database is an un-scalable database.

Comic Sans was designed because when I was working at Microsoft I received a beta version of Microsoft Bob. It was a comic software package that had a dog called Rover at the beginning and he had a balloon with messages using Times New Roman.

The biggest problem with the iPhone’s VPN is that it doesn’t engage automatically. If you wander in and out of a Wi-Fi network’s coverage, and the iPhone switches to EDGE and back, you’ll lose your Internet connection (if the VPN connection tries to remain active) or your VPN protection (if it does not). Here’s hoping Apple fixes that in the iPhone 2.0 software.

In its current (beta) form, Google Doctype contains dozens of articles written by top Googlers on topics important to all Web developers: security, performance, caching, DOM manipulation, CSS styling, and more. It contains over 8,000 lines of JavaScript code: Google’s own battle-tested JavaScript library, released today under a liberal open source license. And it contains the beginnings of a test-driven reference of the open Web: a reference of every element, every attribute, every DOM method, every CSS property, all backed up by test cases.

Almost two years ago, back at WWDC in August 2006, the MacBU announced that Office 2008 would not have support for Visual Basic. I blogged about it at the time, and that one post has proven to be my 15 minutes of Internet fame. It continues to be the most popular post on my site — 21 months later, it still accounts for almost half of all the hits I get each week. A section of the Mac community spoke out very vocally against our decision, and I still hear echos of it to this day.

This isn’t a done deed yet, but I’ve got a new commitment for you.…VB is (well, will be) back, baby! When we came to the realization in 2006 that there was no way for us to keep VB in the product and still ship Office 2008 on any semblance of the schedule we wanted, we announced its removal, but kept looking at how to bring it back into the suite even before we shipped. Many of the technical challenges I wrote about then still remain, but for a while now I and several others have been working with a group of people who know a heck of a lot about the internals of VB, and once we determined that we could achieve the revival VB in the new schedule for the next version of Mac Office, we locked it into place on the feature list.

Steve Yegge gave a talk at Stanford with lots of interesting information and links about dynamic languages and performance:

Java inlines polymorphic methods! Now the simplest way to do it was actually invented here at Stanford by Googler Urs Hoelzle, who’s, you know, like VP and Fellow there, and it’s called, it’s now called Polymorphic Inline Caching. He called it, uh, type-feedback compilation, I believe is what he called it. Great paper. And it scared everybody, apparently. The rumors on the mailing lists were that people were terrified of it, I mean it seems too hard. And if you look at it now, you’re like, dang, that was a good idea.

So when we talk about performance, it’s all crap. The most important thing is that you have a small system. And then the performance will just fall out of it naturally.

What’s happening is: as of this Ajax revolution, the industry shifted to trying to optimize JavaScript. And that has triggered what is going to be a landslide of research in optimizing dynamic languages.

[SAGE] is basically a wrapper around Python with tons of scientific packages added, all nicely pre-compiled into tasty binaries just for you by very nice people (which involves tons of work, not as simple as it sounds). These goodies come in gzipped tarballs that you dump into your $HOME. You can then launch the sage program, which handles regular Python just fine and includes all the modules I was longing for: NumPy (easy, efficient handling of huge numerical array with slicing and dicing), SciPy (input/output and scientific functions), Matplotlib (lots of plotting tools with lickable, anti-aliased output and a syntax almost identical to Matlab)! Even IPython is there, meaning you get a comfortable interactive experience with tab completion on files, objects, dictionaries and tons of other niceties!…Matlab without Matlab.

I’ve chatted with other developers, and we’ve all come to some similar private conclusions about Subversion’s future. First, we think that this will probably be the “final” centralized system that gets written in the open source world — it represents the end-of-the-line for this model of code collaboration. It will continue to be used for many years, but specifically it will gain huge mindshare in the corporate world, while (eventually) losing mindshare to distributed systems in the open-source arena.

The thing is, DVCSs can be preferable to Subversion, even when used in a centralized style. That’s mostly how I use Git, but I appreciate its speed, the efficiency of its disk use (much less space used and many fewer files, which really matter for multi-gigabyte repositories), merging, and not having to worry about .svn folders getting clobbered or moved to the wrong place when I reorganize. Subversion works well, and there are a lot of tools that integrate with it, but as the ecosystems for the DVCSs improve, I can’t see why they wouldn’t start to gain mindshare and marketshare, even outside the open-source world.

Secondly, I don’t really see why Collins-Sussman thinks that Subversion’s advantage is with large projects. I think it’s the opposite.