We're going to try to release another beta of CityDesk today.
At the same time, we're shifting stuff from an older server to a spiffy new one. (Is that asking for trouble, or what?) While that happens, the discussion groups may be a little flaky.
I hate the way that when I change a server's IP address, even though our TTL is set to 15 minutes, people are still using the old IP address almost a week later. Why is that?
A New Look
Ever since I first posted to Joel on Software almost two years ago, this site has been built and maintained using UserLand Manila. Manila is a fine blogging tool and I'm grateful to Dave Winer for making it available, for free, at editthispage.com. Later to improve performance I moved it to my own server, and Dave was kind enough to provide a free copy of Frontier on that server. Joel on Software has always been free and ad-free, thanks to sponsorship from UserLand and from Fog Creek Software.
But it's time to move on. My company's product CityDesk is in beta, and I'm a strong believer in eating your own dogfood. So starting today this site will be produced using CityDesk, and thus the new look.
CityDesk is a desktop application -- I'm running it on my own Windows 2000 laptop. It produces plain ol' static HTML files which are then ftp'ed to a generic web server (in this case, Microsoft IIS 5.0). This is different than what I was doing with Manila, where each page is constructed from a database whenever it is requested.
Porting Joel on Software to CityDesk involved a lot of manual copying-and-pasting -- something I never would have had the patience for if it wasn't for the opportunity to thoroughly test CityDesk. I'm bending over backwards not to create "linkrot" -- all old links to Joel on Software stories have been replaced with redirects, so they should still work. You may discover the odd broken link or picture buried deep within the site; if so please let me know and I'll fix it. It will take a few more days before all the domain names and IP addresses have completely moved over.
Have a look around. The biggest visible change is a nice new, organized Archive page cataloging all the stories I've written over the last couple of years.
Hit and Run Management
Alyosha` asks: "How do you subconciously train your managers not to get involved bungee-cord-jumping style in the design disagreements of the implementors?"
Today, with the help of beta testers, Michael actually tracked down a bug that was only happening to our users with Hebrew or Greek versions of Windows 2000. So we installed Hebrew Windows 2000 on our handy dandy VMWare machine to debug it...
The bug? One of the libraries we were using was using Chr(255) as a separator character in lists. This got mapped through the Hebrew and Greek code pages to a different character (y umlaut was mapped to plain y).
Last night at around 10 PM we fixed the last (known) bug in CityDesk Beta 2. This morning we're going to do some smoke tests and last-minute banging, and if all goes well, we'll release Beta 3 today.
For this beta we found, and fixed, some of the nastiest, hairiest, scariest bugs that we thought we'd never be able to fix. A mysterious crash that couldn't be reproduced reliably. Occasional mauling of HTML code by the WYSIWYG editor, and even more occasionally completely destroying HTML code. (That bug, incidentally, was in a Microsoft library function, which we reimplemented ourselves.) Mysterious startup crashes when you're using a non-Latin1 version of Windows (Hebrew, Greek, etc.) Inability to run as a normal user on Windows NT. And we sped up incremental publishing dramatically by caching CRCs.
Update, 7 PM. We managed to release Beta 3 today - four times! Scary little show-stopper bugs kept popping up. I'm praying that the rate at which show-stopper bugs keep popping up goes down dramatically so I can take the whole weekend off for a change. Fog Creek Software: "We Make Lots of Bugs, But At Least We Fix Them!"
It's about time that I updated my crufty old list of recommended books. What books should I have up there?
Ground rules: to keep this conversation on track, everybody gets to vote for ONE book, and one book only. I really want to hear what people think is the SINGLE best book on "painless software management."
CityDesk, Part Five
Now we're thanking our lucky stars that we didn't have a bunch of stupid venture capitalists forcing us to copy all the other content management companies, and we're grateful that we're not in Silicon Valley where everyone meets at Bucks and Stanford University seminars and copies each other's bad ideas, because the one thing we've heard from everybody who's tried CityDesk, consistently, is that CityDesk is the easiest content management software they've ever seen, full stop. And we got this ease-of-use because we believed certain things about software.
Alan invented Visual Basic, which is the language we used for CityDesk, so it's no big coincidence that I agree with him so wholeheartedly. And it's true: from a UI architecture perspective, browsers are CICS + fonts. CICS is an extremely ancient interactive system used with IBM mainframe terminals. Basically, the server sends a text-mode, full-screen form down to the "smart" terminal. The user fills in the form and sends it back to the server. And that's about all you can do from a UI perspective. The mainframe is happy because it can basically be about as stupid as a web server: queue up all incoming requests and deal with them sequentially. The user suffers because the UI is abysmal and the programmer suffers because you can't MAKE a good UI no matter how hard you try.
I noticed that people were putting HTML tags in discussion group postings, and they didn't know what to do about URLs. So I added some tiny text below the edit box where you type your posting... not that anybody reads tiny text, but we'll see if it helps!
I've long believed that tiny changes in the user interface of any kind of community software result in dramatic changes in the character of the community that you create. I noticed this way back in college, when CompuServe forums generally had two-line postings and nobody ever quoted other people, but Usenet newsgroups had lengthy postings with 21-line ASCII art signatures and 50% quoting. Usenet resulted in the ultimate pathology: people quoting an entire three page article, and inserting their tedious nitpicks between every two lines.
My own discussion software does not have threading. "Threading" is technical jargon for a discussion feature where different people can branch in different directions by replying to replies. You end up with a tree of conversation. Most forum software has this feature and some people were rather angry that mine doesn't.
I first noticed the value of one-train topics using the echo community software, which is, in all other respects, excruciatingly bad. Something interesting happens sociologically when you don't have threading: the conversation is forced along one train of thought. People feel like they can respond to the original inquiry, or they can respond to the last post, but if they want to nitpick about the third post and there are already twenty more posts after that, it's just too late. This seems to eliminate the most gratuitous trivial "yes, I agree" or "you nitwit, you misspelled that" kind of posting which makes it boring to read other forums. The other thing which eliminates them is that there's no automatic mechanism to quote other people. Sheer laziness will prevent most people from tagging on comments that aren't an interesting extension to the current thread. If you really want to set off on a tangent, you have to write something like "I'd like to go back to what X said earlier..." which actually makes the whole topic read more coherently.
Another mechanism for eliminating trivial and uninteresting postings is the slashdot method of having moderators hide them. Theoretically, you can set your threshold high on slashdot so you only see the most interesting posts, but this gives the conversation a choppy feel when you're reading it.
Larry Wall famously said, "People understand instinctively that the best way for computer programs to communicate with each other is for each of the them to be strict in what they emit, and liberal in what they accept." I think that the evolution of HTML has proven that this isn't such a great idea. In fact, the stricter the API is about its input, the more likely the code is going to work in funny situations. The designers of Java got it right when they decided that nothing about the Java spec should leave any choice to the compiler developers (at least, not in the gratuitous way that C did, where the size of basic data types was not fixed). A better quote comes from Russian Field Marshal Suvorov: "A hard drill makes an easy battle." You want your compiler and your development environment to be as strict as possible; you want it to literally generate random return values for GlobalSize so that you don't get into the habit of counting on something that won't be there everywhere; you want to use French international settings on Chinese Windows 2000 with an absurd color scheme, DVORAK keyboard, trackball, 640x480 VGA mode, and huge ugly fonts on your development system so that you remember to bake in the code that adjusts for all these things. Then your application will be buff and strong and it will laugh in the face of wimpy problems like people who use commas instead of dots as the decimal. Ha. I eat commas for breakfast, your code will say, with a Russian accent.
A Hard Drill Makes an Easy Battle
The last few days before shipping a product should be extremely quiet, as the rate of incoming bugs approaches zero. That's where we are now. I've been putting the final touches on a new version of Fog Creek's website (you can see a sneak preview here) and taking the word "Beta" out of the code wherever it appears. We're likely to go live this week -- exactly according to the schedule we set for ourselves six months ago.
CityDesk Is Here!
A few last-minute details, then -- CityDesk is shipping! People can buy it! It's a great feeling after a lot of work.
Time to say thank you. First and foremost, thanks to the CityDesk team who made this release happen on time. Thanks to our beta testers, for bearing with us through thick and thin and five beta releases, for trying CityDesk and building your sites with it. Thanks to our families and friends for supporting us while we worked late. Thanks to you, Joel on Software readers, for bearing with me while I stopped writing about software in the abstract and spent some time doing it. It's been an exciting period and I'm going to sleep for a few months.
Do you have a T3?
The starter edition of CityDesk is free. But you can't download the free version yet because our office T1 can't handle the load and it will take a while to get the software up on Tucows.
In the meantime, we're looking for a volunteer with a lot of extra bandwidth who is willing to mirror the free version for a few weeks until we have a permanent server for it with lots of bandwidth. Please email me if you can do this.
The SETUP is 8 MB and we are expecting thousands of downloads in the first few days -- so don't volunteer unless you really have a ton of excess bandwidth that you'd be willing to donate :) Thanks.
Cool, We Got Mentioned In Australia
Sydney's IT News: "Most of all, Spolsky wants people to want his product. He writes: 'My number one priority is to make an application that's easy to use so that people like it, so that they tell their friends about it, so that everybody buys it and we have to hire full-time employees just to slit open the envelopes and take out the cheques.'" Actually, I think I said "checks!"
"Programmers should only use lower level tools for those parts of the product where they are adding the most value. For example, if you're writing a game where the 3D effects are your major selling point, you can't use an off the shelf 3D engine, you have to roll your own. But if the major selling point of your game is the story, don't waste time getting great 3D graphics -- just use a library."
For your weekend reading pleasure, Rick Chapman interviewed me.
1114 posts over 16 years. Everything I’ve ever published is right here.
There’s a software company in New York City dedicated to doing things the right way and proving that it can be done profitably and successfully.