[A picture of private offices at Fog Creek Software] Alert! This ancient trifle retrieved from the Joel on Software archive is well-past its expiration date. Proceed with care.

Joel on Software

2002/10/19

by Joel Spolsky
Saturday, October 19, 2002

Stuff

Here's some stuff I'm thinking about, in no particular order.

VNC vs. Windows Terminal Services

We regularly use two pieces of software to access Windows computers remotely. Windows Terminal Services from Microsoft (now called "Remote Desktop" in Windows XP, and also marketed by Citrix) is one of them; the other is WinVNC which is an open source project that originated at AT&T in Cambridge, England.

If you have a choice in the matter, Windows Terminal Services is much, much better, for two reasons. First, it is incredibly fast, because the wire protocol is closer to the Windows GDI layer. You can remotely access a Windows computer over a modem quite comfortably, which surprised the heck out of me. By comparison, VNC's network protocol basically consists of transmitting blocks of changed pixels across the wire. So for example when a string is written to the screen, Terminal Services won't transmit much more than the string itself, letting the client find the font and do all the rendering. VNC would have to first detect that a part of the screen had changed, and then transmit a compressed bitmap across the wire. And smooth scrolling works perfectly and feels smooth when you use Terminal Sevices, even over a slow connection. VNC just messes up the screen.

Empirically, it's a lot faster and that makes all the difference in the quality of the experience.

Second big reason. VNC for some reason does not transmit Shift+Arrow keys. The shift gets lost. OK, it's a little bug, but VNC made me notice that I frequently correct typing errors with Shift+Ctrl+Left (select previous word) and then I type over it. VNC doesn't transmit this. As a result it is incredibly painful for me to type long text messages over VNC.

Third big reason. No matter how much I play with the settings, there are too many cases where VNC forgets to transmit a particular "damaged" region of the screen to the client. The two most common cases I've found are when you right-click to get a popup menu -- the menu appears on the server but is not transmitted to the client so you think something is wrong -- and when you scroll in an application that uses smooth scrolling, the screen gets all messed up. It reminds me of Unix, 1987 when your friends would write messages on your tty (old-school IM) and you had to hit Ctrl+L to get Emacs to clean up the screen.

The biggest disadvantage of Windows Terminal Services is that the server has to be a Windows machine. (There are all kinds of clients.) This is not a big deal for me; our Linux machines are servers and ssh is fine. If I really had to do GUI stuff with Linux servers I would just use Exceed or something, but I haven't needed that for years.

AMD Hammer vs. Intel Itanium

Intel's throw-it-all-away-and-start-over Itanium CPU project is turning out to be the Ishtar of the CPU world: way over budget, years late, and terrible. I have heard that running in 32-bit "backwards compatible" mode (required for 99.999% of the software that exists) it is about as fast as a Pentium II/366. Maybe one tenth the performance of the fastest Pentium 4. Meanwhile, AMD couldn't afford to start from scratch, so their new Hammer CPU should be able to run 32 bit code just as fast as a 32 bit processor. Beginning to see a theme? AMD is not really shipping yet, so it's not over until it's over, but I'm betting it will shake out to have been a major mistake that Intel designed a new chip from scratch rather than extend the Pentium 4 with 64 bit features. Maybe some of my readers who follow the CPU world more closely can weigh in.

Meanwhile, back in Throw It All Away Land...

It may turn out to be the case that one of the biggest benefits to come out of the Mozilla project is XUL, which seems to be one of the first solid frameworks for true GUI portability (WORA). Basically, you design your interface in XML, glue the events together with some JavaScript, and call binary XPCOM classes (virtually the same as Microsoft COM classes) when you need to do something fast in C++ that doesn't need a UI. And UI's never need to be that fast, so this is a good division of labor.

Theoretically, you get cross-platform Nirvana. And thanks a lot of hard work all the little platform-specific touches (like Alt+Space N to minimize a window) are finally right, which is one of the biggest weaknesses of previous efforts at WORA like AWT and Swing. If I had to start developing a new commercial app I would seriously look at XUL.

But Joel, You Said Netscape Was Stupid...

They were. They shouldn't have rewritten from scratch. They should have done this all in steps. Big chunky steps, fine, but steps. For example, they could have rebuilt the rendering engine -- without touching any of the other stuff -- as a first step. Then ship. Was there anything wrong with the networking library? I don't think there was. Even if there was, OK. So, fix it. One step at a time. Then ship. Then implement XUL and start converting some of the dialogs to XUL as another step. Then ship. Then port the existing UI -- port, not rewrite -- in XUL. Rather than argue about what the dialogs should have in them, you just recreate the existing dialogs exactly as is, only this time in XUL. Get that working. Ship. Then decide if it's worth changing the dialog. Is it? Ok, Ship again. Yes, getting from a messy architecture to a nice architecture costs time, but it doesn't cost as much as starting from scratch did. Over the period of time between Netscape 4 and Mozilla 1 they could have had three releases and still be where they are now. No, way ahead. And we'd have a real browser ecology instead of monoculture.

Being virtually out of the market for 4 years was a catastrophe for Netscape's browser market share and handed Microsoft a huge monopoly, and they don't need another monopoly. (Some people think it is entirely Microsoft's anticompetitive practices that got them 90% market share in the browser market. I just don't buy that. People used IE instead of Netscape 4.0 over the last four years because they liked it better, not because they were tricked into it or because it was installed on their desktop by default. Give people some credit.)

None of this means that Mozilla is not a good work of engineering and XUL may well be a real benefit to Apple and Linux, because application developers finally have a way to deliver to all three platforms for perhaps 110% of the cost of Windows alone.

Server Logs

I spent some time studying the Joel on Software server logs today. Here are some of the things I wanted to find out.

Do people have the .NET runtime? I'm trying to figure out when we can afford to port CityDesk to .NET without alienating all the download.com people who download CityDesk, try it, like it, and give me money.

Of regular Joel on Software readers, it seems like 32% have the .NET runtime. This seems really high to me compared to the population as a whole. We're software developers. I really don't know why anyone but a software developer would have the .NET runtime now; it doesn't come with any popular software. So my data isn't that useful. If someone has access to the server logs of a more mainstream website, tell me what kind of ratio you're seeing.

Does anyone care about the RSS feed? About 12% of the IP addresses that came to Joel on Software yesterday came to get rss.xml. That's more than I would have thought, but it was a slow news day. I would expect when I actually post a long new article, I would get the same number of RSS clients but way more normal web browser hits. I was also surprised to see that Ranchero NetNewsWire, created by former UserLand employee Brent Simmons, is more than twice as popular as his ex-boss's product Radio (377 subscribers for NNW, 163 for Radio.)

Most of the RSS subscribers are whacking me every hour, which is actually costing me cash money in excess bandwidth charges. How can I set it up so they only visit once a day? Is this an RSS option? I rarely post more than once or twice a day. Maybe I should change the RSS feed to just include headlines with links.


Have you been wondering about Distributed Version Control? It has been a huge productivity boon for us, so I wrote Hg Init, a Mercurial tutorial—check it out!

Want to know more?

You’re reading Joel on Software, stuffed with years and years of completely raving mad articles about software development, managing software teams, designing user interfaces, running successful software companies, and rubber duckies.



About the author.

I’m Joel Spolsky, co-founder of Fog Creek Software, a New York company that proves that you can treat programmers well and still be highly profitable. Programmers get private offices, free lunch, and work 40 hours a week. Customers only pay for software if they’re delighted. We make Trello, which lets you organize anything, together, FogBugz, enlightened issue tracking software for bug tracking, and Kiln, which provides distributed version control and code reviews. I’m also the co-founder and CEO of Stack Exchange. More about me.

© 2000-2014 Joel Spolsky