Ever wonder about that mysterious Content-Type tag? You know, the one you're supposed to put in HTML and you never quite know what it should be? I've been dismayed to discover just how many software developers aren't really completely up to speed on the mysterious world of character sets, encodings, Unicode, all that stuff.
Spolsky, Joel. Joel on Software (2003). Articles>Language>Standards>Unicode
How Microsoft Lost the API War
Microsoft's crown strategic jewel, the Windows API, is lost. The cornerstone of Microsoft's monopoly power and incredibly profitable Windows and Office franchises, which account for virtually all of Microsoft's income and covers up a huge array of unprofitable or marginally profitable product lines, the Windows API is no longer of much interest to developers. The goose that lays the golden eggs is not quite dead, but it does have a terminal disease, one that nobody noticed yet.
Spolsky, Joel. Joel on Software (2004). Articles>Technology>Software>Microsoft Windows
Painless Functional Specifications - Part 1: Why Bother?
Why won't people write specs? People claim that it's because they're saving time by skipping the spec-writing phase. They act as if spec-writing was a luxury reserved for NASA space shuttle engineers, or people who work for giant, established insurance companies. Balderdash.
Spolsky, Joel. Joel on Software (2000). Articles>Writing>Specifications>Software
Painless Functional Specifications - Part 2: What's a Spec?
When you design a product, inside and out, the most important thing is to nail down the user experience. What are the screens, how do they work, what do they do. Later, you worry about how to get from here to there. There's no use arguing about what programming language to use before you've decided what your product is going to do. In this series, I'm only talking about functional specifications.
Spolsky, Joel. Joel on Software (2000). Articles>Writing>Specifications>Functional Specifications
There are 16 readers currently online: 3 registered users and 13 guests. Register.

![]()
![]()


![]()
![]()
![]()