Philip Greenspun notes that it is always more expensive to buy [theatre and concert] tickets over the Internet than in-person and usually more expensive on the Web than on the phone.
If a supplier sells their product via distribution partners and via the web, it is (almost inevitably) going to be cheaper for a customer to buy from one of the distribution partners.
The classic case is plane tickets. You can buy them from the airline over the phone or ‘net, or you can go to a travel agent. If an airline were to charge the same price to travel agents as they do to the general public, then travel agents will have a hard time making money out of the tickets. Eventually travel agents will refuse to sell the tickets.
Airlines need the business that travel agents bring in, so they sell tickets to travel agents at well below the the web price. Because they buy tickets on the cheap, travel agents have some margin to use to compete with each other. The overall effect is that it’s cheaper to buy tickets from a travel agent than from an airline.
I wonder if this is part of the reason why Philip is paying a ”‘net premium”.
Apropos Charles’s recent post on C++ and its relationship with Java, here are some notes from my recent, three month stint in C++.
From a technical point of view, the application we were working on was very simple: single user, two-tier design, green-fields development. As a result we side-stepped a lot of the truly interesting C++ problems, such as needing to implement half a garbage collecting memory manager.
errno, through a return code and through exceptions. The three styles don't mix well at all -- you need to pick one and use it consistently.
The Windows API uses return codes, so it makes sense to use return codes when programming C++ on Windows. In our case, we weren’t using Windows, but the client was more comfortable with the return codes than exceptions, so that’s what we used.
Exceptions work well in Java because they are the single, standard way of indicating exceptional conditions, it therefore makes sense to use Exceptions in Java. I can only guess that the reason Joel doesn’t use exceptions in Java is that he is so used to the return-code style.
const is a major PITA. const is one of those ideas that is good in theory, but horrid in practice. The main problem for us was that if one bit of the code is made "const correct":http://www.cis.nctu.edu.tw/chinese/doc/research/c++/C++FAQ-English/const-correctness.html#faq-18.1, all the code around it is "sucked into the const vortex":http://www.cis.nctu.edu.tw/chinese/doc/research/c++/C++FAQ-English/const-correctness.html#faq-18.3.
After a co-worker decided const-correctness was a Good Thing™, I spent several afternoons retrofitting consts all over the codebase. Those afternoons went like this: add a const keyword. Recompile. Find the newly caused const errors. Add another const keyword. Recompile. See one hundred new const errors. Decide a strategic cast of const to non-const might be appropriate. Repeat.1
To be fair, it became less of an issue over the period of a month or so as the consts wormed their way through the codebase. Even so, I don’t think const-ing caught a single error, or helped us write code any faster. Watch Scott Meyer shuffle his feet when Bill Venner puts this to him.
One of the best decisions James Gosling made was to hold off on adding const to Java.
"". "I broke it":http://www.cardboard.nu/archives/000243.html. Seriously! It took four hours to figure out what was going on. Yay for Java immutable strings.This all serves to confirm Java’s credentials for winning over C++ programmers.
1 Actually I used a bit more thought than that, but that’s the general strategy. Next time I won’t whinge. I’ll just do this:
$ find . -name ’.cpp’ -o -name ’.h’ | xargs perl -i -p -e ‘s/const//’
$ cvs commit -m ‘fix compilation errors’
Mac fans: please don’t read this. Please. It’s quite offensive.
Linux/BSD zealots stop now too. Really. Pages like this are the reason that all open source browsers have a back button. Use it.
It may also make BeOS users sad, too.
After a week of using heavy office-train-home-train use, I’m convinced that Windows XP Pro is a world-class OS for developers. Here is what I am appreciating about it:
From where I am now, it would take about a month to get an equivalent Linux setup, though this is partly due to the Linux-resistance of the HP hardware. No doubt the situation will improve with time. I’ll think about it again in six months or so.
The downsides? I have a bazzillion strange processes running, most of which I probably don’t need. MS Messenger insists that it can’t be uninstalled. I will probably have to pay for anti-virus software.