August 2001

08/31/2001 Friday

Went to see Two Gentlemen of Verona last night. It was ok. I'm not a huge fan of watching Shakespeare's plays. There's so many levels of information in Shakespeare's plays - narrative, socio-political, historic, etc. I find it difficult following the narrative, the simplist level, while watching Lawrence Olivier clones spitting convoluted prose in 14th-century English while alternately pacing furiously and draping themselves uncomfortably over the scenery.
10:25 permalink

Where are all these bugs coming from, she said. Killed two last night, one this morning, she said. And a worm-thing fell out of the cupboard, she said. I think we are infested, she said. It's this place, she said. Meanwhile, on the counter three feet away, the open, festering tub of fat has mysteriously liquified and developed a brown film on it's fourth day of not being thrown out.
10:15 permalink

Fixed the IE6 support in the Browser Detect Lite script. Every version of IE since 4 starts the navigator.appVersion string with the number "4". In most other browsers, this first number is the true version number. In IE4+, you need to look deeper into the navigator.appVersion string - the second item in the parentheses is "MSIE" followed by a space and the real version number. When we encountered this with IE5.0, we all thought it was a bug. Now I guess it's a standard.
10:10 permalink

08/30/2001 Thursday

National Geographic Traveler's 15th anniversity edition lists 50 places you must see in your lifetime. One of them is "cyberspace". I dunno. I've been there and it's not all it's cracked up to be. It used to be nice but it got all commercial. Even the postcards kinda suck.
16:30 permalink

Fairly important bug fix for the 1k DHTML API today. gE() (which gets a reference to a given element) wouldn't find some nested elements in NS4.x. Any elements defined at the root level and elements defined in the first layer at each level of nesting could be retrieved without any problems but trying to find elements at different nesting positions would result in a "d.getElementById is not a function" error as if the element didn't exist. For instance, any element defined within the second positioned element on a page wouldn't be found. This error only affected NS4.x - IE, Mozilla, NS6 and Opera were unaffected. I've fixed the standard core script but the compressed variants are still buggy. Full props to Roland for the bug report.
13:15 permalink

08/29/2001 Wednesday

IE6 is out and there are reports that the default table cell content alignment is center (as opposed to left-align). I haven't installed IE6 because it means getting rid of IE5 (I could use something like VMWare and install different versions of IE on each additional OS but that's a lot of work) so I can't verify this. It's possible that IE6 allows table cells to inherit the table alignment like Mozilla does and the reported effect is a result of this. (via Tim Morgan)
10:05 permalink

Note to self: take a good look at HTML-Kit. Have seen two mentions of it in the last two days but never heard of it before.
09:25 permalink

Two new extensions posted for the 1k DHTML API - one for dynamic element creation and one for smoothly gliding elements to a specific destination on the screen. I may be building my own set of extensions in the future (when I get the time). In related news, I am using the 1k DHTML API on a major commercial project that is being developed right now. It's going to be really tricky - lots of cross-browser DHTML paired with some object-based Javascript logic. It'll be keeping me busy over the next 2.5 weeks. I'll be able to tell you more about it around the middle of October (the client is giving it a long incubation period).
09:10 permalink

08/27/2001 Monday

HTML Coding Guidelines (and articles about them):

Most of these are designed for a specific site or project or are very broad generalizations. Which means that they are either too specific or too general. Use them as starting points for your own production style.
18:00 permalink

Joel, usually a very Microsoft type of guy, doesn't appear to like SourceSafe. This probably says something important about SourceSafe...
09:20 permalink

08/23/2001 Thursday

If you set the src attribute to about:blank in a <layer> tag, you'll probably get a "Alert! did not find a converter or decoder" error dialog. NS is telling you that it's disallowing about:blank due to it's cross-site security thingy. Use a real page instead (just create a blank one). You're more likely to see this message when using ad-blocking software. Surfer Protection Program has more information on encountering it with such software.
12:20 permalink

Taz did a bit of research on the Quicktime in IE issue. He found that as long as you have already downloaded the Quicktime ActiveX control, IE is smart enough to use it when it encounters an <embed> tag without a corresponding <object> tag. So you don't have to re-author all your QT embeds to include an <object> tag. But seeing as how the ActiveX control is new and most people won't have it, adding the <object> tag would be a good idea - without the <object> tag, IE won't automatically download the ActiveX control.
12:15 permalink

Similar to the NS4.x bug that prevents writing to a layer until after the page has finished loading, IE Mac prevents writing to an <iframe> until after the page has loaded. IE4.x gives you an error message but IE5 just stalls in mid-load.
11:05 permalink

Webword: Perception of Usability. Are true usability and perceived usability different things? Can we draw a parallel to the difference between real truth and marketed truth? In my opinion, usability is a heuristic - perceived usability is true usability. In cases where a measured usability differs from a perceived usability, the measurement scheme is probably flawed. We can't draw a parallel to truth vs marketed truth because both of these are concrete, measurable things.
09:45 permalink

If you are using the 1K DHTML API and you keep getting an error in NS4.x which says that "d.getElementById is not a function", it's because you are trying to access an element that doesn't exist - check the id value you are calling gE() with. In order to be as small as possible, the API doesn't have any error checking or recovery functionality. It just assumes that you won't make any mistakes.
08:55 permalink

08/22/2001 Wednesday

Mozilla 0.9.3 still has problems with <iframe>. Specifically, when the dimensions are specified in percentages and the <iframe> is embedded in a <div>.
21:35 permalink

As part of it's non-support of java, IE will no longer support Netscape-style plugins. IE5.5 SP2 and IE6b on the PC have already implemented this policy. The greatest impact for website authors is in Quicktime support. Since there never was a Quicktime ActiveX component, you would have used <embed> tag alone instead of an <object> and <embed> tag combination to insert Quicktime into pages. Now, those pages will be broken in the most recent IE browsers. Quicktime has just created an ActiveX component and published instructions on how to create a Quicktime <object> tag. Copy and paste the sample code to prevent errors in the classid attribute value. Now, go fix all your old code.
13:25 permalink

I recently received an email asking about NS4.x's support of DHTML. Specifically, don't you need to use the <layer> tag for DHTML to work in NS4.x? Most of the time you don't need to use the <layer> tag - just a <div> or <span> with a position: absolute style. NS4.0 came out just before the CSS positioning standard was finalized (later CSS positioning became part of the CSS2 standard). NS had been fighting for a tag-based DHTML (using <layer> and <ilayer>) but the W3C went with a style sheet solution. NS was pretty much married to the <layer> tag at that point but they threw in a quick kludge that translated any <div> and <span> with a position: absolute internally to a <layer> tag. Relatively positioned <div> and <span>s are also converted to <ilayer> tags. This translation works most of the time but sometimes it doesn't. I think relatively positioned elements have extra vertical space added to them that wouldn't appear if you used an <ilayer> tag. Also, using absolutely positioned elements in complex situations will cause crashes that won't occur with the <layer> tag. Figuring out if you need a <layer> tag in NS is a matter of trial and error. Start with a <div> or <span>. If it doesn't work, you may have to do a browser detect and dynamically write a <layer> tag for NS4.x and a <div> or <span> for everything else. You end up with much messier code this way, though. There are some other issues about using <div> or <span> tags in NS4.x but there are easy work-arounds to avoid these problems. For instance, using a style attribute in any tag inside a positioned element makes the element invisible to DHTML operations in NS4.x (you can't get a reference to the element to do anything with it). To avoid this but still apply styles to interior tags, use a class or id instead of the style attribute.
10:35 permalink

The Business Software Alliance's anti-piracy Flash movie is funny. Evil software pirate Meg A. Byte thinks copying software is fun until a virus she downloads steals her design portfolio. She then must battle the virus to get her portfolio back. This involves a pixelated Meg in various video games. The driving and space battle games are safely generic but the Pitfall rip-off is obvious. Isn't that kinda like stealing intellectual property from the original game maker? Ok, not really - it's just a cultural touchstone they are using to communicate to a particular generation. But the movie is too preachy - that Pitfall thing seems hypocritical. (via Kottke)
10:10 permalink

Business Week Online: Failure as a Badge of Honor. Being at the helm of a dead dot-com is something to be proud of? Considering the business plans (or lack thereof) embraced by these types of companies in the late 90's, I think not. But the idea that failure in the business world makes you qualified to tell people how to succeed isn't new. Harvey Mackay, author of Swim With the Sharks : Without Being Eaten Alive : Outsell, Outmanage, Outmotivate, and Outnegotiate Your Competition, built an envelope empire (!) before being turfed by his own board of directors.
08:50 permalink

Someone on a mailing list mentioned that Unix will be 1 billion seconds old on September 9th at 1:46:40am (GMT) (Unix time is counted in seconds from midnight January 1, 1970). Javascript also uses Jan 1, 1970 as it's starting point and counts in milliseconds. This means that the Date object returns a 13-digit number for dates after the September 9th Unix birthday instead of the 12-digit numbers that represents any date since early March, 1973. A very unlikely, but possible Y2K-like problem.
08:40 permalink

08/20/2001 Monday

There was a very loud party in our building on Saturday night. Sherry got up at 1:00 am to figure out who to call to complain about the noise. There was a number under the "Municipal" section of the phone book labelled "Noise Complaints" or something. The recording we got said that we should call back during office hours - it was obviously aimed at construction noise and stuff like that. But it did mention that if we were calling about party noise, we should call 911. I thought 911 was for emergencies only. I'm not going to call 911 about a noisy party if there is the possibility that someone with a real emergency will suffer. Who's stupid idea was that?
10:30 permalink

The Sunday Times: The gold rush. An excerpt from Dot.Bomb, Inside an Internet Goliath from Lunatic Optimism to Panic and Crash, by David Kuo. Boy, do these people sound dumb and greedy. (via Milov)
10:15 permalink

08/17/2001 Friday

Ok. That's it. The internet is done. Finished. You can go home now. I wanted to play some recordings from Muhammad Ali Fights Mr. Tooth Decay (yes, it's a real album - and it is better than it sounds) for a friend but the website that had the sound files was gone. Rare Music was maintained by a record store in NYC that specialized in obscure vinyl. The site was infrequently updated with new offerings, usually broken into "Odd", "Funk" and something else. Each album had a streaming shockwave sound clip (cutting edge back then). Besides hearing Ali rapping about the libery bell, there was The Guitar Ramblers, Sun Ra, and Uri Geller. It was amazing. Now it's gone. Swallowed by the Grand Royale empire as Rare Music Radio (which is good but it's not... you know).
17:30 permalink

Mt. Assiniboine viewed from the lodgeWhen we were at Assiniboine, we climbed up Nub Peak. Sherry only went part way up because, to reach the peak, you need to walk along the edge of a pretty nasty looking ridge with steep slopes on both sides and lots of loose rock. From the top, you get a 360 view of the whole southern section of the park. I didn't want to leave Sherry waiting too long so I took a bunch of pictures and set off back down right away. I figured that I would enjoy the view after the fact from the photos. I learnt a number of things when I got the photos back from the developers:

  • My photography skills suck ass.
  • You really need a good tripod if you want to attempt a 360 panorama.
  • Even if my photography skills didn't suck ass, photos are a poor replacement for the real thing.

I scanned in my 360 photos and tried to match the seams up but... it kinda looks like crap. You'll have to do with a view of Mt. Assiniboine taken from the lodge instead.
11:10 permalink

Tibet is a client-side application development tool set. It extends the abilities of Javascript to provide stuff like class based inheritance and easy client-server communication. You also get an IDE and debugging tools. Interesting. (props to Marc)
09:30 permalink

C# is a dumb name. In the programming world, # isn't read "sharp", it's read "hash". Which makes C# "C-hash". Which sounds like "crash". Which is a bad thing in programming.
08:30 permalink

08/16/2001 Thursday

Went to the bookstore to find web project management books. Instead, found Airstream : The History of the Land Yacht (though RVs are not cool, Airstreams are), Boring Postcards (airport hotels, motels, public buildings, etc from the 40's and 50's) and a second edition of Kooks (just the old Kooks book with the Kooks Outtakes appended to the end).
14:15 permalink

I'm currently looking for anything I can find about low level website production processes. Detailed stuff that affects the phase of frontend development between design and testing. Coding guidelines, workflow, source control, template building, etc. Send me anything you can and I'll post it here.
09:25 permalink

Cary writes to evangelize about Meaya's Popup Ad Filter. Sez it blocks ads but not legit popup windows without fail. The only thing that it has problem with are popups launched from form buttons.
09:20 permalink

To date, I've received over 100 copies of the Sircam virus. I'm not too bothered by this volume. I've set up a couple rules that dump all these emails into the deleted box. And there is a potential upside - every now and then, I browse through the list of attachments in the infected emails for blackmail material. Nothing yet.
09:15 permalink

08/15/2001 Wednesday

I'm appalled. Apparently grey-scale sites are a trend.
15:00 permalink

An oldie-but-goodie: ultra low-res animated gif mystery movies in Finnish.
10:50 permalink

Somewhat related to my babbling about how ad blocking software may react to pop-under ads is Mozilla's configurable security policies. Particularly the one limiting the access of the open() method of the window object. I haven't tried it out but it looks like adding the line:

user_pref("", "sameOrigin");

to your prefs.js file will prevent sites from opening documents from different domains in new windows. Of course, this prevents non-ad new windows (many sites open external links in new windows). Also, ad popups can still get around this restriction by initially loading a local page into the new window which redircts to the external ad (frequently done to track ad click-thrus). So not much of a solution, unfortunately.
10:15 permalink

Milov points to some indentation styles. I'm still kickin it old skool with K&R for my javascript. I'm experimenting with a new HTML indentation style. It's similar to the Whitesmiths style but HTML isn't like normal code in that the tags are the braces. Also, whitespace in HTML isn't ignored like it is in most programming languages so you don't have the flexibility that you'd like to use whitespace to show the logical structure of your code. I'm still working on the style so it isn't very consistent yet. View the source of this page and let me know what you think.
09:35 permalink

Antenna has made a table border toggle bookmarklet for debugging HTML (DOM browsers only). Another, more precise way to debug a table-based layouts is to give individual table cells different background colours. Turning table borders on and off will cause your layout to change because of the extra pixels taken up by the borders which might make debugging some complex layouts or making small adjustments difficult. Changing background colours won't affect the layout.
09:20 permalink

08/13/2001 Monday

If you have been using NS6.x or Mozilla, you've probably noticed the superfluous "00:00 permalink" above the main content column on the homepage. This is part of a commented-out template for my posts (I maintain this site by hand). Every new day, I copy and paste this template, fill in the particulars for the day and uncomment it. But part of the comment appears as plain text in Gecko-based browsers. I thought this was an obscure, un-fixed bug in Mozilla and didn't bother trying to fix the problem. It turns out that it isn't a bug. My comment contained "--" which is the true ending of a comment (I always thought a "-->" was needed to finish a comment). I removed the "--" and the everything is ok now. Thanks goes to Palov who brought the situation up on Bugzilla. Also see the comments towards the bottom of bug 79139 regarding various doctypes and quirks vs. strict modes of parsing: Mozilla uses strict mode for all XHTML doctypes - even transitional ones. Damn.
14:25 permalink

Sorta caught up. Now I can tell you about the vacation: very nice. Didn't think about work once. Spent five days hiking in Assiniboine Provincial Park in beautiful weather. Saw a big-horn sheep, whiskey jacks, a hummingbird, a sparrow-like bird that ate horseflies, about a billion ground squirrels and twice as many mosquitos, horseflies, and other assorted bugs. No grizzlies even though everyone else saw them. Mountains, glaciers, lakes, trees, and lots of wild flowers. Loved the sound of sheets of glacier breaking off and crashing down the mountain - sounds just like thunder. It was all very, very good. Shot 5 rolls of film - I'll post some photos when I have them developed.
13:35 permalink

A joke found on the company intranet:

A man in a hot air balloon realised he was lost. He reduced altitude and spotted a woman below.
He descended a bit more and shouted, "Excuse me, can you help me? I promised a friend I would meet him an hour ago, but I don't know where I am."
The woman below replied, "You are in a hot air balloon hovering approximately 30 feet above the ground. You are between 40 and 41 degrees north latitude and between 59 and 60 degrees west longitude."
"You must be a developer," said the balloonist.
"I am," replied the woman, "How did you know?"
"Well," answered the balloonist, "everything you told me is technically correct, but I have no idea what to make of your information, and the fact is I am still lost. Frankly, you've not been much help so far."
The woman below responded, "You must be an project manager."
"I am," replied the balloonist, "but how did you know?"
"Well," said the woman, "you don't know where you are or where you are going. You have risen to where you are due to a large quantity of hot air. You made a promise which you have no idea how to keep, and you expect me to solve your problem. The fact is you are in exactly the same position you were in before we met, but now, somehow, it's my fault."

Other variants of this joke exist but this version is just beautiful.
11:10 permalink

Frontend: Download Speeds And Usability. I would argue that it isn't the true download speed that matters (the time between the mouse click and the browser throbber stopping after the page has completed loading), but the perceived download time. I'd measure this as the time between the mouse click and the point at which the user can start to interact with a page in a meaningful way. I work on a lot of content-heavy pages. Some top out above 100K which is a generally-accepted no-no. I try to code these pages in such a way that the page appears gradually so that the user has something to look at / interact with while the page finishes loading. Stacked tables are good. CSS positioning is better.
10:45 permalink

Brent praises Code Complete. Being self-taught with no background in the theory of programming, I found it invaluable. The information density in that book is incredible. I have to read (and re-read) it in short chunks and adjust my style in increments so that I don't get overwhelmed. I still feel like I am missing much that a formal education would have provided. I don't feel like I can really call myself a programmer.
10:25 permalink

Back from holidays. Much catching up to be done. Ugh. Though not as much as last year. The web is slowing down.
10:15 permalink

08/03/2001 Friday

I'll be on holiday until the 13th (so no updates for you). I will be away from the internet, computers, phones, tv, radios, newspapers, electricity, indoor plumbing, and the indoors. I will be here. If you need me, forget it.
15:20 permalink

A cross-browser <blink> tag / effect. I'm here to fill needs you never even knew existed.
13:25 permalink

Rubbings of school desk graffiti. In grade 4, I spent hours carving my initials into the edge of my desk with the tip of my compass. Sometimes I think about going back to find that desk. The top was constructed of press-board with faux wood grain plastic laminated to the top and bottom. Because of the softness of the press-board, most of the desk modification was done to the edges. There was a hole that I could stick half of my pinky finger in. Must have taken hours to make. Whenever I go to antique stores I look for the old school desks. They have the most character. The names and initials give you a palpable link to the past.
11:55 permalink

09:50 permalink

08/01/2001 Wednesday

On my desk, there is what I think is an Nintendo Gameboy Advance promotional popcorn bag (it showed up mysteriously during the construction of the GBA site). The sides of the bag have scale drawings of the toy from various angles with parts labelled. The one I don't understand is "High-performance ON/OFF switch". What makes it high performance?
09:40 permalink