Has Joel Spolsky Jumped the Shark?

September 11, 2006

When you're starting out as a technical blogger, you'll inevitably stumble across Joel on Software. He's been blogging since the year 2000, when computers were hand-carved of wood and the internet transmitted data via carrier pigeon. He has his own software development company, a few books under his belt, and he's an outstanding and entertaining writer by any measure. In many ways, Joel is a legend.

Although Joel's blog entries are generally pure gold, he has generated his fair share of controversy in the last six years. For example, he doesn't like programming using exceptions, despite the fact that they are the bread and butter of modern programming languages. He also said that teaching new programmers only Java is liable to poison their minds, although I think Java is the least of any budding new programmer's problems. But a few of Joel's recent posts go far, far beyond these minor gaffes.

For instance, two weeks ago we found out that Joel's company wrote their flagship product, FogBugz, in a proprietary language they created themselves.

FogBugz is written in Wasabi, a very advanced, functional-programming dialect of Basic with closures and lambdas and Rails-like active records that can be compiled down to VBScript, JavaScript, PHP4 or PHP5. Wasabi is a private, in-house language written by one of our best developers that is optimized specifically for developing FogBugz; the Wasabi compiler itself is written in C#.

You couldn't possibly have heard it, but that was the sound of fifty thousand programmers' heads simultaneously exploding.

Writing your own language is absolutely beyond the pale. It's a toxic decision that is so completely at odds with Joel's previous excellent and sane advice on software development that people literally thought he was joking. He had to write an entire follow-up post to explain that, no, he wasn't kidding.

Read his defense of Wasabi. If anything, it amplifies the insanity. Because, you know, installing a PHP/NET/Java runtime at a customer site is totally unsupportable, even though it's the business model of 99.9% of the rest of the world. And with Wasabi, they can add any language features they want! Just like Lisp, right? And eventually they'll plug in a .NET CLR back-end to Wasabi and generate bytecode! Never mind the fact that your company's flagship application is still written in a freaky custom language based on VBScript that only three people in the world know how to program.

But wait! It gets worse!

Joel Spolsky -- WTF

Now Joel says that a dynamically typed language like Ruby can't possibly be fast enough to run FogBugz:

I understand the philosophy that developer cycles are more important than cpu cycles, but frankly that's just a bumper-sticker slogan and not fair to the people who are complaining about performance. Even though our product, FogBugz, seems like something that should be perfect for Ruby on Rails, we have several parts of code where performance is extremely important. In FogBugz 6 there's one place where we need to do literally millions of calculations to display a single chart on a single web page. We have gotten it down to 3 seconds or so in our current development environment with a lot of optimization, but frankly with a duck-typed function call I really don't think we could do it before the web browser gave up and timed out and the sun cooled down a couple of degrees.

Let me get this straight. Let me make sure I'm understanding this. Because I think I've gone crosseyed.

  1. I don't see how Wasabi-- a language that, per Joel, compiles down to VBScript on Windows-- could actually be faster than Ruby. VBScript certainly isn't compiled, and it isn't exactly known for its blazing speed. Speed improvement is one of the many bullet points used to justify the switch from ASP to ASP.NET.

  2. If performance is so critically important in this section of the code, why wouldn't Joel simply build that section of the code in a compiled language and call it from the other language? Am I missing something here? Is there some law that states all code for a web application must be in the same exact language?

  3. Justifying any language choice based on one tiny section of the code makes no sense whatsoever. It's a complete reversal of the well-known 90/10 rule. If we followed Joel's logic, we should reject all dynamically typed languages. Even in a world filled with 3 gigahertz $200 dual-core CPUs that get cheaper every nanosecond. Because, y'know, there's this one part here that's kinda slow.

All of this makes me wonder: has Joel Spolsky jumped the shark?

I reject this new, highly illogical Joel Spolsky. I demand the immediate return of the sage, sane, wise Joel Spolsky of years past. But maybe it's like wishing for a long-running television show to return to its previous glories.

Posted by Jeff Atwood
158 Comments

Back in the late 90's I was advised not to learn Java because it would never be "fast enough for any serious web application". So now it seems odd to hear Java being held up as the faster language.

It's a good thing I didn't listen back then and I imagine Ruby developers will do the same thing we did in the early days of Java... throw hardware at it until Moore's law catches up.

Peter on September 13, 2006 12:52 PM

Customers aren't being unruly if they're expecting a product to install straight from what comes out of the box, and--in corporations--without installing something that will cause a problem peculiar only to those environments (like licensing, security, and a need to institutionalize the knowledge to maintain it).

Our company happens to be flexible, so if FogBugz required Ruby on Rails I could find a machine to do it. That said, my comfort is still inversely proportional to the number of dependencies a tool requires, and therefore I would be one of Galloway's unruly customers, and Joel would have to fire me.

There exist companies that "damn the torpedoes" and deploy their applications on young and next-gen platforms, even if it means a lower market penetration. There also exist companies that don't do this, and a consequence is that their products fit a different market.

I'm obviously *not* an unruly customer, because I think breaking backwards compatibility is something to be taken in moderation. It is not a wise business decision for *US* to replace technology at the same frequency that new products are being developed. We skip versions. We wait for the first service pack. We even waited a year before switching to .Net 2.0 for our in-house projects because that was the schedule that suited us.

The quality of this discussion over Wasabi seems to be related to how seriously you take Joel's requirements, because when they are taken seriously "Wasabi" is no less absurd than chosing to "fire" half of your customers.

Chris Wenham on September 13, 2006 12:57 PM

I think his posts have been part of an elaborate joke that has yet to play out fully...

Edwin on September 13, 2006 1:04 PM

Yeeeah, when Joel posted about his favorite Firefox plugins, I knew we were officially hitting rock bottom. Joel is scraping for content.

Maybe it's time Joel gets out of his little FogCreek world and see what the rest of the world has been up to? He's been on a pedestal way too long.

Jim Jones on September 13, 2006 1:14 PM

Sorry, but article and most of comments are just pure envy.
Joel makes money with proprietary compiler. So what. He can.
And you are trying to prove to him that his way is no good. He has results, you did not show yours.

Zendar on September 13, 2006 1:18 PM

i have probably read each and every one of joels articles, i was a big fan of him.
but things have changed recently, he has slowed down, i don't find the latest articles as valuable as past articles. i am sure that joel knows about this and he is trying to speculate and remain in the front pages this way
he has the power, and he knows it. he manipulates things even a new programmer would understand to be wrong. he is a great marketing person!

kaanengin on September 13, 2006 1:39 PM

Bart wrote:
"Isn't writing your own language something you do solely in compiler class? Am sure he has his reasons but I'll think the cons outweigh the pros."

I'm sure glad Bart wasn't the one making the business decision regarding creating Fortran or Lisp, C or C++, C# or Java. Of course, there might have been some benefit to Bart being the business manager for Visual Basic and COBOL but I digress.

The cons of creating a language MAY outweigh the pros but, as the evolution of programming languages has shown, these pros/cons must be assessed against a variety of circumstances such as evolution of software methodology, changing technology, better understanding of human psychology, target market of application, etc.

Tim Dudra on September 14, 2006 3:03 AM

(1) Six years of code already written in VBScript

Yea gods! All the more reason to chuck it. Surely a conversion to wasabi is as much work as one to any other language?

You're not going to be able to hire new staff. Every developer I know would run a mile from a job interview where they stated that they used their own language. Most would run from a job that even mentioned VBScript or Asp.
Only the rubbish ones who suck at the languages they claim to know already will take it.

Also, you now need two dev teams, one to maintain the Wasabi parser and one to code in Wasabi. This might make sense if the Wasabi team was massive and wrote hundereds of bespoke simple apps that all needed to be cross platform. Personally I'd prefer a proper language even then.
FogCreek only has two products.

The Wasabi team will need to be very, very good. While some claim that this sort of interpreter is easy to write, it'll actually be a nightmare. You can't debug on it, you can have Wasabi code that compiles to VBscript and works, but falls over in PHP. Is that a bug with the code or the compiler? To fix it you need someone who knows Wasabi, the compiler and the result language well.

(2) Needs to run on customers' Windows and Unix servers

Ok, so you need unix and windows support. You could use Ruby, PHP, Java, any number of others.

(3) Minimize tech support costs

With Wasabi? Maybe short term, but long term you're in trouble.
Tech support, for a simple product like FogBugs that basically has one list of cases with lots of filters, just isn't going to be your controlling cost.

(4) Many customers refuse to install new runtimes on their servers, either because of IT policies or out of stubborness

Yeah, but they're a tiny proportion of your potential market. You can't buy a server from Microsoft anymore that doesn't come with .Net 1 already, and all Unix installs are going to require something specific.

This isn't about Jeff vs Joel, or Ruby vs Wasabi. It's that a respected member of the online coding community (i.e. Joel) has come up with the dumbest idea I've heard in ages. It's like a Dilbert cartoon or something. Then he's gone on to defend it. Switching an entire development team to a proprietry language in this fashion is nuts!

Keith on September 14, 2006 3:22 AM

So, are those of you who are poo-pooing wasabi saying that FogCreek should be maintaining 4 or 5 separate codebases for one product?

Surely not?

Having FogBugz run in multiple languages is a _business_ decision; a decision which brings along a sizable risk. Wasabi is nothing more than an elegant solution to mitigating that risk by replacing the risk of "maintaining N codebases" with "maintaining an in-house language."

The proof of the pudding is in the eating: Joel is a successful businessman making real money in the real world.

... plus, he entertains me.
Thanks Joel.
;)
- AJ

AJ Finch on September 14, 2006 5:18 AM

I agree with AJ Finch. You guys that are flogging Joel for using Wasabi simply don't get the point. Maybe it hasn't been clearly stated, but I understand that Wasabi compiles to the target languages, not that it is actually compiled or interpreted each time a page is called.
What we have here is an example for a domain specific language (DSL) that actually works. (Check out Microsoft's feeble attempts in this direction, called "Microsoft Domain-Specific Language (DSL) Tools" for a good laugh, or a WTF, if you like). I recommend that you read something about generative programming. For multiple target platforms this is a far better choice than maintaining different codebases.
At our company we maintain the same interface in six different languages. Though the codebase is not large, it's not fun. Writing a domain specific language parser and code generator *is* fun, however, so Joel hits two flies with one stroke: keep the bright guys happy, and make the job easier for the juniors. Gosh! I wish I could work for that guy (if it wasn't for the 5000 miles from here to New York)!

Leo on September 14, 2006 6:15 AM

i don't have time to look at Wasabi carefully and i raise my eyebrows at a suggestion that you can't do X in an interpreted language or, in this case, Ruby, except maybe for hard real-time things. but i understand why Joel Spolsky and company did Wasabi. to adapt an aphorism popular in a different community, "There's more than one way to do it."

in particular, setting aside OO and standardization fever and a lust for the LAMP stack, there is an old and strong school of development which looks at building applications in terms of devising just the right languages for its various parts and then implementing them. this is the school most specifically taught by Waite (ISBN 0134518985) but also practiced by many others, including Burge (ISBN 0201144506). this is the world of macro processing, techniques like the full and half bootstrap, the source of ideas like streams. it a world that list processing languages grew up in, like LISP. it's viable.

indeed, the only problem with it is that its practioners need to know a lot, both in terms of data structures and analytical techniques. it fell out of popularity partly because it was beyond the skill or training of most people to master. how many can read and understand Burge's book? or do the problems in Knuth's second volume?

but if you have an in-house team with superb programming skills, why the heck not? just because the rest of the world doesn't do things that way? why should they care what other people think?


ekzept on September 14, 2006 6:48 AM

@Jon Galloway: I repeatedly hear the argument that Vista was delayed because of backwards compatibility constraints. Far from it. The problem was in the other direction: that various teams in user mode were trying to write their new components (e.g. Explorer, Sidebar) on top of Avalon, which was in itself on top of .NET 2.0. These components were never stable enough to know whether a bug was in your code or in your dependencies. Eventually a halt was called to this morass of shifting sands. This isn't a reflection on the quality of .NET at all - just that trying to develop on top of a developing runtime is practically impossible. Microsoft may use new C++ compilers with new releases of Windows, but they've got literally twenty years of working code in there and can revert to an older version if there's a problem.

In the two years since then, they've tried to get what features they can implemented on top of the old Win32 API so they have something to ship.

Vista may have been a five-year project but three of those years were largely wasted. Some components, particularly the kernel, had few dependencies and could be accepted straight into the new source tree, so do have effectively five years of development in them over Windows XP.

I recall reading this from Larry Osterman (http://blogs.msdn.com/larryosterman/) but can't find a link. Larry mentions the 'Longhorn reset' in this article: http://blogs.msdn.com/larryosterman/archive/2005/08/23/455193.aspx. Unfortunately he doesn't go into details. It's possible he actually mentioned it on the Channel 9 forums: good luck finding it over there.

I cannot imagine the amount of engineering required to completely throw away Windows and start again, and to do so would be foolish in the extreme. In a much smaller way, throwing away FogBugz would be pretty silly too. BTW, it's not 'six-year-old VBScript code'. Some of it would be six years old at the time of making the decision, but you probably couldn't point to any section and say, 'that's six years old.' Instead, a lot of it would have been edited recently to support new features. It would be six years of working around bugs and implementing new requirements.

If you have code that works for a particular scenario, you keep it. Throwing it away loses you years of development time with no guarantee that you will not incur the same bugs and workarounds that you had to deal with last time.

I have an eight-year-old codebase in Visual Basic 6.0, and it's starting to hit the limits of scalability (the lack of multithreading in a standalone EXE is starting to hurt). I don't envision writing a VB6 compiler as I'd hit those same limits - and I don't have even Joel's resources. This probably has hit time for a rewrite, as what I can do by extending it with C++ COM components is pretty limited. I'm going to have to be very careful not to introduce more problems than I fix.

Mike Dimmick on September 14, 2006 7:46 AM

Found Larry's post: http://channel9.msdn.com/ShowPost.aspx?PostID=71890#71890

Mike Dimmick on September 14, 2006 8:07 AM

Yea guys, stop knocking Wasabi... I'm using it to write my own operating system! I think Microsoft should consider re-writing Vista on top of Wasabi too.

Wasssssaaaabi? on September 14, 2006 10:00 AM

Isn't writing your own language something you do solely in compiler class? Am sure he has his reasons but I'll think the cons outweigh the pros. Which is harder: installing .NET on a client's server or writing and maintaining your own language? Bear in mind that most servers aren't bought solely to run FogBugz. Chances are other programs running on those server require some form of runtime (java, .NET, php etc).

Bart on September 14, 2006 11:47 AM

Joel has this "do what I say, not what I do" thing going on. He has for years, too.

I remember being astonished when I found out Fog Creek wrote their own installer from scratch for FogBugz. They don't use InstallShield or Wyse or any of those tools. This is kind of like writing your own language; oh, wait, I guess they did that, too.

There is no way this makes sense, it violates Joel's own "do your core competency and outsource everything else" philosophy, at least as stated in his posts.

My theory is that when people get stuck, they look for "easy" things to work on, and writing installers or langauge compilers is easy, compared to you know stuff like writing actually shipping code for customers.

Ole

P.S. I love Joel's writings. Do what he says, not we does!

Ole Eichhorn on September 15, 2006 6:53 AM

There is no way this makes sense, it violates Joel's own "do your core competency and outsource everything else" philosophy, at least as stated in his posts.

Exactly. And Joel is such a brilliant, persuasive writer he can actually convince you *writing their own installer/language was a good idea*. It's scary, actually.

Jeff Atwood on September 15, 2006 7:44 AM

There is at least one thing that makes sense to me:

1. Joel is distributing source code in Wasabi.
2. Joel has the only Wasabi compiler in the world.

So it's open source, but it's also a proprietary tie-in to a particular platform.

This whole "Joel's Gone Crazy" thing bothers me less than it did when I first read it a couple of days ago. I think what bothered me the most was how Joel put the Wasabi revelation at the bottom of his discourse about how to choose a enterprise platform stack. That made it stick out with the big "WTF".

What bothers me more are his complaints about Ruby being slow in regards to "doing millions of calculations to display a single chart on a single web page". It's actually pretty easy to develop a module in C for Ruby and load it at runtime, so that the call "MyModule.generate_table(some_data)" will look up and call a C function that can loop across the data or do its own MySQL lookups or whatever. That function can be as fast as any C function can be. It's part of the "optimize later" strategy, and you know it's always available.

It's my opinion that there are two types of languages: Ones in which the machine is efficient (assembly, C, DSP-centric languages), and ones in which the developer is efficient (any dynamic language). The good news is that you don't have to pick only one. For a project I'm working on, we have about half the code in C and about half in Lua. All of the computation and system device interface code (libraries) is done in C (some of it automatically generated from text files) and all of the user interface states and scripting is done in Lua. It works really well.


Brendan Dowling on September 15, 2006 8:34 AM

it does seem to contradict earlier comments and assertions Joel has made. Maybe he fell in love with the intern who wrote Wasabi and let that affect his judgement...? somehow I don't think the best programmers from the best schools want to work in vbscript. (he's always big on hiring the best and brightest) vbscript is for dummies like me :-)

Owen on September 15, 2006 9:20 AM

Owen's comment is somewhat interesting. It says "I don't think the best programmers ... want to work in vbscript".

However, the _best_ programmers know that writing code to communicate with a computer is only a very small part of their job. Steve McConnell, in Code Complete at page 764, writes "A guru ... recognizes that programming is only 15 percent communicating with the computer, that it's 85 percent communicating with people". As such, the programming language is not as important as the language, structure and design of the application. Programmers who endlessly bicker about what language is best and which languages they will/won't work in have very likely failed to make the transtion from what Steve McConnell calls the Intermediate and Specialist levels to the Guru level (i.e., the best programmers).

Tim Dudra on September 15, 2006 10:10 AM

Maybe Joel's first big mistake was simply not calling Wasabi what it is: a domain specific language (or a language translator). Apparently customers never see the Wasabi language. They only see something they are familiar with.

(Joel's second big mistake was writing a muddle of a criticism against Ruby.)

Everyone seems to agree that Joel is a genius of a writer. Just to play devil's advocate, it could be argued that this whole mess is the result of confusing writing. If he had been more clear about what Wasabi is and what role it plays, all of this might have played out differently.

Dave on September 16, 2006 11:28 AM

Okay, I'm going to make one small comment about this whole idea of "writing your own programming language".

See, I just came across a copy of a 1976 book by a couple of fellows, Kernighan and Plauger, entitled "Software Tools" -- maybe you've heard of them? The book is a discussion of a set of programs that they describe as being "real-world" programs rather than academic exercises, and it includes all the source code. They're mostly basic utilities -- a source-code preprocessor, a file sorter, a line editor, etc.

So, what language are these programs written in? Ratfor. Ratfor is a preprocessor to Fortran 66, which they wrote because they wanted to write things in ways that weren't convenient in the versions of Fortran available at the time. The source code to the preprocessor is the final chapter of the book, so it's nice as an exercise, but this is what they wrote serious production code in -- this homegrown language that nobody else (at the time) had ever heard of.

Sounds remarkably like Wasabi, if you ask me.

Brooks Moses on September 17, 2006 3:15 AM

Wasabi is an excellent example of ego getting in the way of technical decisions. Joel Spolsky was the man behind VBA. Of course he is going to love any solution that compiles down to his brainchild. Joel also has a big addiction to Not Invented Here Syndrome. He writes a lengthy defense of it here: http://www.joelonsoftware.com/articles/fog0000000007.html


Remember Joel, the first step is admitting you are an addict.

n8 on September 18, 2006 3:25 AM

I don't see anything wrong with the choice Joel made...
In web development quite frequently you do have to test some constraints for form fields and only then submit the form (thinking about usability here, not the usual enterprise logic) and then test the constraints again yet now in a server-side language. This is two languages doing the same thing (unless of course you do use javascript on the server too). That's where code translator comes into play (if you have one of course). And that's in addition to no pain deployment on the customers server.

I do not always agree with Joel, but mostly he's got a good point somewhere and I do respect that.

By the way did you try Google's GWT? They DO COMPILE JAVA INTO JAVASCRIPT! Wow Googlers lost their mind too and most probably Google will die now... Or will they? :)

Marius on September 18, 2006 6:39 AM

Keith, all you've done is show that developers such as you have zero business intelligence, and know nothing about running software companies for profit.

My whole point was about the business, not the software. Fog creek has been successful because they got into a niche and made it theirs. Fogbugz is not a great app, it's not a hard to copy app. They just sell it for slightly less than it would cost to develop from scratch and it covers needed functionality.

They're lucky that they can carry the cost of Wasabi and still make a good profit. I reckon that they probably require more developers, who are harder to recruit, and with a lot more costs to manage, than they would even with different unix and windows editions.
Most of us just aren't that lucky.

Ruby on rails must have them worried, as it reduces the cost of developing non-enterprise level, in-house, management tools like fogbugz.

Keith on September 20, 2006 5:47 AM

The people condemning Joel for making a DSL remind me a lot of graduates I have met who took courses such as "Advanced Java" rather than "Compiler Design". The latter was perceived, correctly, as far more challenging, and the threat to their GPA too much to risk,

Thankfully I work almost exclusively with the kinds of graduate who would have taken the latter, more interesting, course. We have dozens of DSLs, and some of them are truly fantastic. Best of all, I don't have to put up with people making nonsensical assertions based on ignorance and an overdose of kool-aid.

abc on September 23, 2006 4:29 AM

a tad late in reading the post and the comments :) but thanks guys!!

have been reading jeff and joel for some time now....

rr on October 3, 2006 10:39 AM

In Ned Batchelder's pro-exception article you cited, he says:

"Status returns can't even be used with some functions. For example...Destructors may not even be explicitly called, never mind that they don't have a return value."

But destructors should *never* throw exceptions since destructors can be called as the stack unwinds after an exception is thrown, and thus can result in multiple outstanding thrown exceptions, which (I think) is undefined.

Doesn't that underline that even experts have trouble using exceptions correctly, and thus reinforce Joel's point?

Matt W on March 8, 2007 10:51 AM

As a guy who makes good money writing preparsers in PHP to create custom domain specific languages, all I can say is: Hah! Anyone who doesn't understand that lisp is a mindset rather than a language deserves to rot in the programming wasteland. Dot Net is just as much of a trap as scheme... you don't have to color within the lines if you're sufficiently perverse.

Alan Turing's Ex-boyfriend on September 1, 2007 6:45 AM

Exactly. And Joel is such a brilliant, persuasive writer he can actually convince you *writing their own installer/language was a good idea*. It's scary, actually.

Just repeating what other, more clever, people have said so far, but I think you're kind of missing the point here.

Writing their own installer and own language is indeed a great idea in this case, just based on what I've read in your article (haven't really read Joel much ever).

From what you've written, Joel apparently has a web-based app which runs native on php on a lamp stack, and runs native in ASP/VBScript on a windows/IIS stack. This may just be because the non-standards compliant windows world scares me, but I don't know of many web apps which run identically on both of those stacks, do you?
(I certainly don't think running PHP on a Windows/IIS stack would be a walk in the park, even though I'm a lamp geek. Didn't Zend recently have to make all kinds of modifications to php or fastcgi or something to get it to run php properly on windows?)

If it is the case that Joel can run the same app in the language which best supports the platform on several different types of platforms, then I think you've really missed the point. From what you've written, Jeff, the point of Wasabi appears to be that by abstracting away the underlying idiosyncrasies of a platform you can concentrate on developing the part that really matters of your app and think about that rather than having to keep 7 different versions in sync all the time.

This is the same thing that prototype and jquery do with javascript, abstracting each browser's idiosyncrasies away from the developer and letting them write a simple command like animate() or scrollLeft() without having to worry about the ten different ways to do it in each browser. If everything you say is true, Jeff, then FogBugz seems like a pretty wickedly cool place to work to me. Not only have they abstracted away their javascript, but they've abstracted away the language underneath so that when you're writing your code you don't have to think: "Does Windows support this socket call?" or "How can I get this to work within Unix's file permissions system?" Wasabi takes care of all of that for you, and you just write your app.

That's sweet, if you ask me.

A. Nonny Mouse on October 27, 2007 11:23 AM

You keep using the term VBScript. I don't think you know what it means.

Regardless, I find your ideas intriguing and would like to subscribe to your newsletter.

Have a nice day.

darkside on November 6, 2007 10:56 AM

Just read his "java flame" article.

Sure there are no pointers but heck, why does he keep on saying that you can't teach recursion in Java? Using recursion is perfectly possible in Java, even in 2005.

Carra on December 19, 2007 3:36 AM

Update: The lastest version of FogBugz is terribly slow. It wouldn't work with Firefox without some fiddling either.

Rocketboy on December 19, 2007 4:06 AM

Folks,

A source-to-source translator can work very well for web apps. My employer at the time even filed a patent on it.

http://www.freshpatents.com/Source-code-translator-dt20060511ptan20060101429.php

We generated C# form java. These days, I would agree with stevey and just use Rhino to run on Linux/Java and avoid PHP. Just think of Java as an OS that runs JavaScript. My $0.02

David Vydra on December 21, 2007 11:06 AM

everyone is entitled to his own opinion

Bill on March 1, 2008 2:15 AM

Read this post of him about reinventing the wheel:

http://www.joelonsoftware.com/articles/fog0000000007.html

Santi on April 13, 2008 4:03 AM

it's easy for him to create a new language. hey! he's part of early incarnations of Excel, Macros and possibly VBA. he knows what he's doing. who can tell, Wasabi might become a mainstream programming language someday

mike on April 28, 2008 8:50 AM

Another nice "feature" is they store the DB connection string in the registry at HKLM\Software\FogBugz.
Hey wait a minute, this is a web app!
You need to give IIS permission to read HKLM\Software\FogBugz. Depending on who you are allowing to use FogBugz and how you have IIS configured you may need to have generous permissions on the registry key. What fun!

jjMan on May 28, 2008 1:59 PM

storing the connection string in the registry is SO early nineties.

Chris on May 30, 2008 4:35 AM

Joel Spolsky is an idiot. He always has been.

YouAreARetard on June 27, 2008 2:48 AM

No I'm not. I'm smart.

JoelSpolsky on June 27, 2008 2:50 AM

I found this code in a third party library recently:

inline std::string toString(const xmlChar* str) {
// This would make Joel Spolsky cry (that's why I'm doing it)
return (const char*)str;
}

random on September 4, 2008 9:23 AM

Could you help me. I've been on a diet for two weeks and all I've lost is two weeks.
I am from Israel and too bad know English, give true I wrote the following sentence: Furniture plaza offers many clocks including our decorative wall clock, atomic wall clock, mantle clock, desk clock, table clock, and more clocks.

With respect :o, Rooney.

Rooney on April 22, 2009 12:55 PM

Your site is very good. Thank you for the opportunity to sign your guest book.
I am from Emirates and learning to read in English, please tell me right I wrote the following sentence: Distinctive home decor, your home accessory resource! Find table clocks, wall clocks, and mantle clocks so your always just in time! We offer many decorative styles.

Thank you very much :P. Trent.

Trent on April 24, 2009 12:20 PM

I'm curious to know if he wishes that this article wasn't posted given his involvement with working (cough, cough) being paid by Joel to run StackOverflow.

Tim on May 7, 2009 5:53 AM

So while I think VBS sucks, and writing your own web development language is a bad idea, I still think Joel knows a lot more than me about creating a successful business and *that's* why I read his stuff.

That may be so, but during the whole CoPilot joke, he babbled incessantly about the greatness of New York, the wonders of interns writing code from a spec, and persistently refused to write a single sentence describing the business arguments that led them to decide it was a good idea, and for all the "written from scratch in 10 weeks" lies, noone wanted to discuss how much time and effort was spent writing the big-up-front-design spec before the interns arrived, or the time spent evaluating the open source software they used as a basis.

Joel may not be a moron, but he's keeping a few secrets, and mostly on the business side of the topic. (That may be understandable, but licking his boots clean is a little excessive.)

Anon on February 6, 2010 9:51 PM

Reading all this A* blogger stuff on the .NET makes me really wonder who the coders are that actually acheive the great things?
The ones bitching about what isn't good (Joel, Wasabi, ROR etc) or the ones who spend their bitching time on writing better code.

Simon Tamman on February 6, 2010 9:51 PM

I personally read Joel for entertainment, ideas, and that overall warm fuzzy feeling any programmer gets from someone who actually respects their profession and their work.

Virtually every site or blog I read will occasionally have content that I disagree with. Sometimes vehemently so. That's healthy. If any community of people agrees on everything, it's a sign of groupthink.

Joel is definitely an "old-schooler". He's wary of new toys. That's healthy too. We need the conservatives as well as the early adopters. I think he prefers to wait until technologies are mature before he actually does *business* with them (as opposed to pet projects), which is perfectly reasonable to me. Ruby is not a mature product yet.

Perhaps he is having some internal argument and airing it out on his site; if so, it's hardly a surprise given the number of programmers who simply will not listen to a bad word about Ruby. Perhaps he is subtly laying down the law for his company; if so, it's his company, his perogative, and the post is an interesting glimpse into the politics of software companies.

Both his major products (FogBugz and CityDesk) are very good products and while they certainly aren't perfect, they also sell at a tiny fraction of the price of products like Jira. Say what you will about things like Wasabi - I think it's a bit ridiculous myself - but it's enabled him and his company to provide great value at low cost. Isn't that what every small/startup business wants?

Some of his posts may even border on the absurd (like the one about exceptions), but I think he's entitled to a few "misses", and no, I wouldn't really say he's jumped the shark or gone insane - he's entitled to his opinions.

Aaron G on February 6, 2010 9:51 PM

" VB Sucks!! SUCKS!! "

This comment really sums up the dross quality of replies here.

He is talking about business decisions that are resulting in huge business profits for himself.

The contributors to this site are "techies" who will never understand the common need to program in a lower-demonitation language for ease of distribution.

THAT IS WHY YOU ARE STUCK IN A CUBICLE AND PEOPLE LIKE JOEL ARE RELEXING ON A TROPICAL ISLAND WITH A PINA COLADA!!

James Bukowski Haroldson Ford Michaelangelo Demetrious Franciso Mandingo on February 6, 2010 9:51 PM

Hmmmm, I hope Joel keeps blasting off at the
mouth because I can't help but think someone
at 37 signals is going to get an idea -

"Hey, let's write a bug tracking application.""

Indeed, and no business will use it as they want their data on their own servers and don't want to install a runtime, and your business fails, and you are flipping burgers AGAIN and life just seems so unfair and confusing and it you'd only think about the BUSINESS reasons and not the TECHNICAL reasons then maybe you wouldn't be being bossed around by a kid 25 years younger than you.

James Bukowski Haroldson Ford Michaelangelo Demetrious Franciso Mandingo on February 6, 2010 9:51 PM

"That said, the whole Wasabi and dynamic language saga makes me feel like I just walked through a sewer. It's not the kind of grand, intelligent softare lifecycle plan I'd expect out of a smart company like Fog Creek. That's why it's so jarring."

That is because you are a TECHIE who does not understand that development decisions are made for BUSINESS REASONS. That is why you are unable to run your own software company. Do you see?

James Bukowski Haroldson Ford Michaelangelo Demetrious Franciso Mandingo on February 6, 2010 9:51 PM

This seems like the time the frog realizes he's being boiled, and resigns himself to being the world's best frog legs. I don't believe anyone would look at the overall requirements today and say Wasabi is a good technical solution. Wasabi probably makes a lot more sense in view of the day to day craziness of selling a software product, but technical and business leadership need to balance today's needs vs. the burden of design debt.

At some point, too, you need to fire the customers that are holding you back. To frame this a different way, let's look at Windows and Mac. Windows built a large but unruly customer base by supporting everything and preserving backward compatibility. Mac OS's come out regularly, but support a lot less hardware and haven't been known for backwards compatibility. True, Microsoft made billions off of their pattern, but the huge weight of trying to please the crowd that wants their ten year old applications to work has contributed to the long delays in shipping Vista. Microsoft has finally become a little more pragmatic about dropping products and technologies (and the associated customers), but they still had to cut a lot of features they'd like to implement because they're dealing with the legacy of decades of product deadlines.

Now, as a vendor, you need to make a decision on what kind of clients you want to sell to. As long I had enough volume to stay in business, I'd rather sell to Mac-like users than to cranky users who demand that I support ten year old drivers. I prefer developing with Microsoft technology, but if I were a vendor I'd rather sell to customers who don't make me waste my time due to their poor decisions. There's a range of workable business models there - in the OS field, and in the bug tracking field. There are plenty of people out there who continue to make a living building in VB, classic ASP, Access 97, etc. As time goes on, sane customers move on to newer technologies, and they're stuck working for crazy people. It's hard to write really good software for crazy people.

I'd be interested in seeing the numbers behind the business study that led to supporting classic ASP and PHP4 over ASP.NET and XSP on Mono. How many potential clients said they wouldn't install .NET a few years ago, but actually have it now as part of a service pack? How many PHP shops might have considered installing Mono if FogBugz just wasn't available for PHP4? Are there other products which will convert or run ASP.NET code under PHP, the way Mainsoft converts .NET applications to run under J2EE?

I disagree with Chris. I've looked at the FogBugz ASP code to customize our installation. If the Wasabi base code looks like this with some whizbang closures bolted on top, I pity the developers who have to work on this stuff. This application easy to hack (in the traditional sense, not the cracker sense), not customize.

Jon Galloway on February 6, 2010 9:51 PM

To balance what I've said - we use FogBugz for my work, and from an end user point of view, it is a fabulous product. It works really, really well. I wish they's sell a reporting package instead of sticking to the "reports are bad" thing, but it is a really, really, really good product.

As long as their technical solution can support this level of product quality for years to come, Joel laughs last.

Jon Galloway on February 6, 2010 9:51 PM

i"Let's put it this way. You have these constraints:

(1) Six years of code already written in VBScript

(2) Needs to run on customers' Windows and Unix servers

(3) Minimize tech support costs

(4) Many customers refuse to install new runtimes on their servers, either because of IT policies or out of stubborness

What would be your solution?"
/i

Beatings for the people who allowed the VBScript situation to get six years old.

Hamilton Lovecraft on February 6, 2010 9:51 PM

@Chris, I think you're misinterpreting my comments. In my comment, I talked about a continuum of technology support and the tradeoffs in customer base. I didn't say "fire the customers who won't install the latest beta"; .NET has been out for 4 years and is included with Windows 2003. It's not bleeding edge stuff. You've misunderstood me if you think I'm advocating anyone firing half their customer base.

The time is approaching when customers will start to pass on FogBugz if it _doesn't_ run on ASP.NET. Wasabi may have been a good and necessary bridge solution, but as time passes it's going to make as much sense as trying to sell a web product that runs on cgi.

Jon Galloway on February 6, 2010 9:51 PM

It sounded like madness when I first read the article, but as I've thought about it over the last 24 hours I think that Wasabi might be a very good idea. Functional languages are small (you can fit a scheme interpreter into less than 100k), easy to create and (if you can get people who know how to use them) powerful beyond the dreams of us mere .net developers if messrs Yegge, Graham et al are to believed. To add a new platform to the application they just need to write a new interpreter for the language which, if it's well specced out, should be pretty easy to do. Your own language never becomes obselete as it can be reimplemented as the underlying platforms change without needing to change your application.

If you have very smart people working for you and you know you are always going to have very smart people working for you it's not a crazy idea at all. It just looks like one at first glance.

Ben Moxon on February 6, 2010 9:51 PM

Keith, all you've done is show that developers such as you have zero business intelligence, and know nothing about running software companies for profit.

That is why your post was written from a cubicle and not an office with a view of Manhatten.

James Bukowski Haroldson Ford Michaelangelo Demetrious Franciso Mandingo on February 6, 2010 9:51 PM

Joel knows what he's talking about. This is a bone-headed article with a lot of bone-headed follow-up.

Anon on February 6, 2010 9:51 PM

«Back

The comments to this entry are closed.