06

Two questions and a font

Question one, for you telecom mavens out there. If you buy DSL service in New York from Covad, aren’t they just going to get Verizon to install the actual DSL circuit? If so… why is it cheaper to get it from Covad?

Yes, we seem to be in the market for a new DSL provider. And I’m tired of playing the blame game where your DSL provider blames everything on Verizon and Verizon blames everything on the DSL provider, so I’d be willing to pay the monopoly tax if it meant when our DSL went down there was nobody left to blame. If you know whether Covad uses Verizon, post an answer here.

Question two, for you reliable SQL Server mavens out there. Suppose I wanted to build a Win2K-based web service using SQL Server to store the data. But I’m a reliability nut. So obviously I’ll use industrial strength servers with RAID, two power supplies and network cards, etc, and they’ll live in secure colocation facilities.

To further minimize failure points, I’ll have a hot backup. But the twist is that I figured as long as I’m paying for a hot backup, it would be more reliable if it was somewhere else, say, on the other coast.

So here’s the plan I’m working on. Server A in New York, with IIS and SQL Server. Server B in Vancouver, with IIS and SQL Server. Server A is somehow “writing through” any database changes to server B. I know I can do this with transaction log shipping; is this a good way to do it? Is there a better way?

Then if Server A blows up, I simply ask my ISP to route the packets intended for Server A to Server B. (I assume they can do this if it’s their backbone).

What do you think of this scheme?

Might I please kindly request in advance that you do not suggest using Linux instead of Windows 2003. Yes, I concede that Linux is “more secure,” but not when I’m the one pushing the buttons. Last time a flaw was discovered in Windows, it took me two clicks to patch it. Last time a flaw was discovered in SSH, it took me four hours of compiling and messing around to patch it. I apologize but I don’t have the skilz to keep a Linux box secure, so please, let’s talk about how to make this particular configuration reliable, not about whether Linux is a better OS than Windows. Or, actually, if you do want to talk about whether Linux is more secure than Windows, do so here.

And a font

Back in the days when I did Mac development (System 6) the biggest monitors available for the Mac were maybe 9″, and the only way to see a reasonable amount of code on screen was to use a tiny font. Now that I have two 18″ LCD panels, the only way to see a reasonable amount of code on screen is to use a tiny font. The world is awash in lovely TrueType fonts but none of them are monospaced, which is a nuisance for programming because things which should line up won’t.

Fortunately, I have found ProFont, and all is well again. For best results use the FON version, not the TTF version.

3

New Fog Creek Home PageFog Creek’s website has been redone to use our new Sam Sherwood-designed logo. The cutting edge page design is thanks to superstar web designer Dave Shea, famous for the CSS garden and the eye-popping new Mozilla home page, with additional programming and graphics by Fog Creek’s own Dmitri Kalmar. It’s about 99% standards-compliant (with the exception of a couple of stray FONT tags left over from old content that hasn’t been updated… oh the horror!).

31

URLs are clickable in the forums, again. We turned it off temporarily because of a new technique called blog comment spam … basically, robots which post URLs to blog comments in order to improve that URL’s page rank with Google, which is determined, among other things, by the number, PageRank, and diversity of incoming links.

We’ve reengineered it so that URLs become links to a redirect server hosted by Fog Creek which, we hope, means that posting a URL in our discussion group will not boost its PageRank.

Microsoft PDC

The Microsoft PDC is over. I loved having an opportunity to talk to so many of you in person at the Apress booth.

The PDC consisted mostly of what used to be called vaporware: preannouncements of cool products that are years and years away. But cool products they are, indeed. XAML is lightyears ahead of the old GDI/USER style of programming the user interface. WinFS, the new filesystem, means you never have to decide whether to use a relational database or a big-mess-of-files. In WinFS a file is a database row, with arbitrary fields, and you can run efficient SELECT statements on files. No, none of this is brand new. XAML’s vector oriented display model reminds me of an XML version of NeWS (15 years old). BeOS apparently used to have the ability to add attributes to files which were indexed and queryable.

And, no, none of this works today. There’s a prerelease version of Longhorn available, but many aspects of the design are sure to change before the beta, currently scheduled for “about a year from now,” with the final operating system shipping “about two years from now,” which means nobody will actually have Longhorn for about three years, if Microsoft keeps their schedule, which they won’t.

25

I’m off to LA. If you’re at the PDC remember to ride your Segway into the ASP Today/Apress booth, say hi, meet other Joel on Software people, and get a free copy of FogBUGZ.

Monday 12:30 – 1:30
Tuesday 11:00 – 12:00
Wednesday 1:00 – 2:00

24

Tokens

It’s hard to believe that here it is, what, 2002? No, I think it’s 2003, and when you want to send a really big file or a folder full of little files to someone, you generally wind up messing around with ftp servers and whatnot.

Tokens screenshotWell, no longer. “A token is like a shortcut or alias that you can send via e-mail or instant message. With just one click you can create a token, and no matter how large the files you want to send are, the token representing them will be very small—just a few KB. Anyone you send a token to can then download the free Creo Token Redeemer software, and with one click redeem the token and download the files. It works for anything—a single file, an entire folder, a huge movie.”

It’s quite cool. When you send a token via email your computer becomes a server, holding the files until the recipient redeems the tokens to get the file. The UI is really really simple, and you don’t have to worry about whether the recipient already knows about tokens (if not, they’ll get a link to download the free redeemer) or if there are firewalls in the way (if there are, the file transfer will automatically bounce off of Creo’s giant-reflector-in-the-sky). This is a great implementation of a simple idea that brilliantly solves the nagging problem that it’s just not easy enough to transfer large files down the hall, let alone halfway around the world, and it’s going to take off like wildfire.

21

PDC MapGoing to the PDC?

Anyone going to the Microsoft Professional Developer Conference in Los Angeles? Let’s meet at the ASP Today/Apress booth (booth 533). I’ll be hanging out, signing books, and passing out free copies of FogBUGZ.

Monday 10/27 – 12:30 – 1:30
Tuesday 10/28 – 11:00 – 12:00
Wednesday 10/29 – 1:00 – 2:00

Terror Profiles Don’t Work

Bruce Schneier: “I think we need to put all U.S. ex-servicemen on a special watch list, because they obviously could be terrorists. I think we should flag them for ‘special screening’ when they fly and think twice before allowing them to take scuba-diving lessons. What do you think of my idea? I hope you’re appalled, incensed and angry…”

17

Developers Developers Developers Developers

Empower program for ISVs -- the boxOk, the video of Microsoft CEO Steve Ballmer in the advanced stages of ecstatic frenzy chanting the “Developers” mantra was funny, but his company took it seriously, and Microsoft really does a better job than any other platform vendor encouraging small companies to write software that runs on the Windows platform. If you’re a software company willing to commit to developing software for any variant of Windows, you can join the Empower Program for ISVs, which entitles you a huge pile of software at the ridiculously low price of $750. You get 5 copies of MSDN Universal (normally $2600 each) … this is the package that includes top-of-the-line versions of every single Microsoft development tool and compiler, and Office, and Visio, and developer copies of every server product, and the MSDN library, and copies of every operating system ever shipped (Greek Windows 98SE? You got it!). Empower also includes 5 copies each of Windows XP, Office XP, and a bunch of servers with 5 client licenses… basically everything you need to develop software for Windows with a team of five programmers for $750.

There was one catch, which is why I refrained from signing up for Empower in the past: you had to go through a fairly annoying sign up process which included lots of non-optional questions about things like your annual revenues and how many employees you have… information points that I didn’t really feel like Microsoft needed to have in their big fat Potential Competitors database, for when Bill Gates woke up one morning and decided to do a SQL query to find all the software companies that were ripe for a little friendly competition from Redmond.

One day Paul Gomes, a developer evangelist working out of Microsoft’s New York office, called me up, as he does quite frequently, to complain about the fact that we were recommending our customers use Windows Server 2000 instead of 2003 for hosting FogBUGZ due to some incompatibilities in the threading model of IIS 6 (which we have since resolved, by the way). “Why didn’t you sign up for Empower?” he asked.

I told him how I thought it was offensive that Microsoft wanted data on my sales and number of employees. “You’re a platform vendor, but also a potential competitor, so I’m sensitive about that stuff,” I said.

“I hear you,” he said, and proceeded to call up the ISV relations group back at Redmond. They called me back and walked through the signup procedure, and I told them which questions I thought were inappropriate. Then they did something which surprised me: they made every one of those questions optional. Not just for me, for everyone.

So I signed up, and got a great big box in the mail with piles and piles of DVDs.

(Now if I could just figure out how to convince them to include Flight Simulator in MSDN Universal…)

Exceptions in the Rainforest

Ned: “The debate over exceptions and status returns is not about whether error handling is hard to do well. We all agree on that. It’s not about whether exceptions make it magically better. They don’t, and if someone says they do, they haven’t written large systems in the real world. The debate is about how errors should be communicated through the code.”

And Now For Something Completely Different

Did you see the mention of the new Fog Creek Office in the Wall Street Journal?

and…

AutomatedQA’s TestComplete is such a slick product and seems to be just as capable as the market leader, Mercury Interactive WinRunner, at less than one tenth the price. Why does anybody pay $6000 a seat for WinRunner?

15

DoSomething()

Ned Batchelder has written a spirited defense of exceptions.

With status returns:

STATUS DoSomething(int a, int b)
{
STATUS st;
st = DoThing1(a);
if (st != SGOOD) return st;
st = DoThing2(b);
if (st != SGOOD) return st;
return SGOOD;
}

And then with exceptions:

void DoSomething(int a, int b)
{
DoThing1(a);
DoThing2(b);
}

Ned, for the sake of argument, could you do me a huge favor, let’s use a real example. Change the name of DoSomething() to InstallSoftware(), rename DoThing1() to CopyFiles() and DoThing2() to MakeRegistryEntries().

OK – Cancel

OK-Cancel Comic StripKevin Cheng: “There are four major classes of problematic programmers that I have worked with…”

And Back To Exceptions

There’s no perfect way to write code to handle errors. Arguments about whether exception handling is “good” or “bad” quickly devolve into disjointed pros and cons which never balance each other out, the hallmark of a religious debate. There are lots of good reasons to use exceptions, and lots of good reasons not to. All design is about tradeoffs. There is no perfect design and there is certainly never any perfect code.

Announcing the Joel on Software Book Club

Small Things Considered book cover imageThe imperfection of design is the theme of October’s Book of the Month. Did you ever think about why calculators have 1, 2, and 3 on the bottom row while phones put those keys on the top row? Why did the high beam headlight switch migrate from a floorboard pedal to a toggle on the steering shaft? Whatever you’re designing, from the error handling facilities of your software to the fat handle of a toothbrush which is highly ergonomic but can’t fit in anyone’s toothbrush holder, you have to trade off things that can’t really be balanced against each other. And no matter what you do, you’ll be subject to criticism, much of it valid.

Henry Petroski, who can write a 448 page book about the common pencil and make it fascinating, has done it again, this time with an excellent book about why there is no perfect design. All design is about tradeoffs, and if you don’t believe me, this book offers dozens of examples from everyday life. It even offers a candidate for the best designed object on the planet (the three-legged plastic nubbin that keeps your pizza box lid from sticking to the cheese) and shows why even that is imperfect. Small Things Considered: Why There Is No Perfect Design is another great read and it’s the first Joel on Software book of the month.

14

PHP and Unicode

Scott Reynen shows how to use integer arrays in PHP to handle Unicode manually.

There are also functions available called the Multi-Byte String Functions which handle many encodings. Please ignore the part in the documentation that says that this is “developed to handle Japanese characters.” It actually appears to handle lots of encodings including the Unicode ones. However it is turned off by default so you must recompile PHP to enable it.