onLine weblog archive
Saturday, August 05, 2000
Some companies use "cookies," which help collect data from a hard drive...
For those interested, all glish.com design iterations are still available for your viewing pleasure:
- Original
- Atrocious blue and gray
- Photo navigation #1 (using absolutely positioned Divs)
- Photo navigation #2 (with liquid effects)
Web Services are building blocks for constructing distributed Web-based applications in a platform, object model, and multilanguage manner. Web Services are based on open Internet standards, such as HTTP and XML, and form the basis of Microsoft's vision of the programmable Web.
Friday, August 04, 2000
In the past, in order to achieve pixel perfect DHTML, I have had to use absolutely positioned Divs for the whole page layout, which, as you may have heard me complain about before, causes numerous problems, mainly in NS4. Take a look at the source code of this page to get an idea of the kludges I have had to resort to get styles to cascade into nested Divs. And notice the commented out javascript that used to center this page, but which I had to remove because of weirdness in IE5 for the Mac. Using absolute positioning is just way too problematic.
Now, some of you are saying "I've seen that before," and others are saying "duh! old news." But mind you, I am not talking about things like the DHTML tool tip help pop-ups in use at Visual IRC, or even the persistent little ad that sometimes chases you down the screen at MSNBC.com. Those things are not tied to the exact location of page elements; the pop-ups are tied to your cursor location, and the MSNBC ad is tied to the upper right of the browser window. But the photo blow-ups at quokka.com are tied to the x,y coordinates of the thumbnails. A ha! That is exactly what I want to do with the site navigation and the featured photo on this page, and now I know how to do it without resorting to absolutely positioned layouts. I tracked down the source of this wonderful bit of javascript to a Jamie Jaworski Superscripter article at Builder.com: Blow Up Your Images. Here's the code:
function showBlowup(divID, imageID) {
if(document.layers) {
// Navigator 4 model
var divObject = document.layers[divID];
var imageObject = document.images[imageID];
divObject.pageX = imageObject.x;
divObject.pageY = imageObject.y;
divObject.visibility = "visible";
} else if(document.all) {
// Internet Explorer model
var divStyle = document.all.item(divID).style;
var imageObject = document.images[imageID];
divStyle.posLeft =...
(window.event.clientX - window.event.offsetX);
divStyle.posTop =...
(window.event.clientY - window.event.offsetY + ...
document.body.scrollTop);
if (navigator.appVersion.indexOf("Mac") >= 0) {
// work around Mac IE bug
divStyle.posTop -= document.body.scrollTop;
}
divStyle.visibility = "visible";
}
}
As you can see, the trick is in getting the page coordinates of the image you want to align your Div with. It's easy in NS, a little crazier in IE. It should be just as easy in IE, since the IE image object does have offsetLeft and offsetTop properties which are supposed to correlate to the NS image object x and y properties. But IE's properties are very flaky, and if you nest the image in a table they return ridiculously wrong values. So in IE you have to do some trickery using the built in event object to get the coordinates.But once you've done it, you can move absolutely postioned elements to the exact coordinates of relatively positioned page elements. Soon, glish.com will take advantage of this little trick and things will be so much nicer, for you and for me!
I should probably make clear that all this only applies to the wicked world where we have to care about the 4.0 browsers. Such silliness will not be necessary in the promised land.
BTW, I tracked down the Superscripter article by looking at the code at aaronland.net, where the same photo blow up trick is used and credit is properly given to Builder.com. (But wait you say, I thought he rolled his own...) Oh, and I haven'y yet ripped apart the glassdog code to see how a simlar effect is achieved there. He uses some code from developer.netscape.com.
Thursday, August 03, 2000
Wednesday, August 02, 2000
P.S. They still need permanent links.
That JPEG comment "security hole" has got to be the biggest load of lard ever perpetuated on the American people by the Christian Right. The so-called "buffer overflow" only occurs in adult images, and only in consenual peer-to-peer transactions. It's called S&M people, and it's no stranger than what you do under the covers at night with the angora socks your sweet Aunt Betty gave you last Christmas.The Evolt mailing list is taking the incident quite seriously and the grown-ups are considering removing the comment altogether. If it wasn't such brilliant nonsense I would have sympathy for those that want to delete it; as it is I laugh out loud each time I read it. Reminds me of EngineBeak's strange posts over at MetaFilter.
We want to build a platform where your preference for one language over another doesn't negate the whole value proposition. We want to create a platform where there can be innovation. Who's helping COBOL programmers today? Who's taking them to the Web? Only on the .NET platform can you embed Fujitsu COBOL in an ASP page. I mean it's truly revolutionary....
One of the wonderful things the .NET framework has done for scripting languages is to make them compiled. Look at ASP+. Now, you're actually running real compiled code in your pages; it's not late-bound, dispatch look-ups where you don't see a runtime error until the user hits the page. ASP+ developers can use the full power of Visual Basic .NET instead of VBScript. And for the first time, they have the ability to use Perl, Python, and other popular languages if they so choose....
I might point out that we're taking a true open standards approach with ECMA. When and if ECMA actually arrives at a standard for C# and a common language infrastructure, the result will be available under ECMA's copyright and licensing policies, which are truly open. Any customer, and any person, will be able to license the ECMA C# standard, subset it, superset it, and they won't have to pay royalties. They'll be able take it and go implement it on any platform or any device.But Derek pointed out to me this little bit of ridiculousness:
This notion that Java is 100% pure and gives you 100% portability just isn't true. There's a great interview with James Gosling on IBM's developer works site in which he directly addresses this issue. He said, yeah, the whole right-once-run-anywhere, 100%-pure-thing was a really goofy idea, and was more of a marketing thing. He says, in effect, "We didn't think we'd ever be able to deliver all that, and basically we haven't." Here's the inventor of the language saying that neither purity nor portability exists.He's taking that completely out of context. Here it is from the interview he is referring to with a bit more context:
The perfect goal of "write once, run anywhere, anything runs on anything" is just goofy. You're never going to run some piece of weather modeling software on a toaster [laughs]. And you wouldn't want to. So there are some scale and capability limits. But within that, you can do an awful lot to make sure that if somebody wants to read a file, it looks the same everywhere reading a file makes sense.Read the whole interview for even more context; they're talking about the problems of using Java on cell phones.
Anyway, the whole article on C# is a perfect example of why I have a love hate relationship with MS. I love using their technology; I love ASP, and SQL7, and MSXML, and Internet Explorer, and I even like Win2k a whole lot. But I hate lies, and I hate evil marketing, and I don't understand why Hejlsberg would want to ruin a great article on the promise of the .NET program with a dishonest slam on Java. Actually, I guess I do understand why, and that's why I hate it.
Touretzky [a witness for the defense, a computer science professor at Carnegie Mellon University] informed the court that computer code is the means by which programmers communicate to one another with precision so banning DeCSS will inevitably have a chilling effect on his ability to express himself. Touretzky explained how source and object code really convey the same idea - only expressed differently, and cautioned the court against differentiating between different forms of speech (including computer code) for purposes of First Amendment protection.This page explores the argument in more detail, and shows a t-shirt from copyleft.com that has the DeCSS source code printed on it to prove the point. As if the prosecution wanted to help make the case for the defense, they added copyleft to the lawsuit.

Tuesday, August 01, 2000
Point: Copywrong by Lance Arthur
Counter-point: Rock 'n' Roll Heaven by Robert Wright
More points: Thoughts on Napster at peterme.com
Discuss.
As for me, I'm hoping that Napster and all its peer-to-peer file sharing clones will utterly break the strangle hold the big labels have on recorded music.
IE5 Mac users may also have to slightly resize your window after the page loads to get a scroll bar. Seems IE5 doesn't like to give you a scroll bar if all the page content is in an absolutely positioned Div. [KLUDGE: a transparent one pixel gif stretched to a height of 110%. It fixes the problem, but it makes me feel all icky, like David Siegel.]
Monday, July 31, 2000
Dejavu.org is extremely cool, especially if you like reminiscing about the days of web yore. Read through the timeline for some great links. My first browser was Netscape 1.1, and I remember this page quite well from when the 2.0 beta was launched.
...the plan, if it comes off, would put into the hands of the U.S. government an electronic asset long regarded as the Holy Grail of digital marketing: a centralized database correlating consumers, street addresses and e-mail addresses. It could be the most efficient tool ever created for delivering spam....This is perhaps the most frightening thing I have ever heard of. And even dumber than that movie The Postman.
It's time to abandon Mozilla, to let it go in peace. The parts that work -- nearly everybody agrees that the Gecko layout engine is wonderful; the project management tools are nice -- should be harvested for use by the living, and the rest tied up in a biohazard bag and burned. It's a little sad, yes, but it's also the only reasonable option left.
The rotting smell has gotten too strong to ignore.
I keep a handwritten journal for each project I embark on. It helps me to keep track of my daily frustrations, successes, and failures. Reading back over nearly a decade's worth of these notebooks, I've distilled the following guidelines on how to avoid writing bad software...