February 24th, 2006
I’m doing a little hacking on jEdit in preparation for my next article, as well as an upcoming talk at Software Development 2006. After mutliple failed attempts, I finally figure out how to check out the main code base from CVS into Eclipse with assistance from Rick Stabile.
The next step is to run the main() method. The application starts but no window pops up, and this error message is printed on the console:
[error] Image Fetcher 0: Uncaught error fetching image:
Read the rest of this entry »
Posted in Programming | 3 Comments »
February 22nd, 2006
Posted in Web Development | 40 Comments »
February 19th, 2006
As you probably know using Google maps on a web site requires a custom API key that is locked to the web site. For example, my key is ABQIAAAANzhjmjn_aQro8IDfoVHCkxT-n61mIiazNPHwWTk3s75Ar5J1YhQDxyPhUR-O4Nfg_1iRn1pAUseY4g and every page that uses a Google map includes this script element:
<script src= "http://maps.google.com/maps?file=api&v=1&key=ABQIAAAANzhjmjn_aQro8IDfoVHCkxT-n61mIiazNPHwWTk3s75Ar5J1YhQDxyPhUR-O4Nfg_1iRn1pAUseY4g" type="text/javascript"></script>
I’m not giving away any secret by telling you that. You could figure out the same thing using View Source. However. the key is locked to the web site. If you try using that key on a different site, the map won’t load.
Read the rest of this entry »
Posted in Web Development | 2 Comments »
February 7th, 2006
Cookie management in Firefox is too much of an all or nothing thing: either block everything or block nothing or be annoyed by constant cookie popups:

Here are a few simple improvements Firefox could make to vastly improve user experience while maintaining privacy:
Read the rest of this entry »
Posted in User Interface | 2 Comments »
February 5th, 2006
Optimization is a subject fraught with witchcraft, voodoo, and superstition. Far too often it is done badly and pseudoscientifically. The first rule of optimization is that you can’t do it without measuring . Almost any guess you make about performance is at best irrelevant and often actively harmful. A common technique is to write a benchmark that runs the piece of code you’re trying to optimize several thousand times, and prints out the time it takes to run. Then tune until the time comes down.
They’re at least ten reasons why this technique fails more often than it succeeds (forgetting to account for HotSpot initialization, optimizing a piece of code in which the program spends a trivial amount of time, etc.) but recently I encountered an 11th: the benchmark may not be exercising the code you think it is. This turns out to be surprisingly common, and the more complex the code is, the more likely this is to occur.
Read the rest of this entry »
Posted in Blogroll, Testing | 1 Comment »