Developer's notebook OTD
Sep. 17th, 2007 09:07 am![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Last night's growling due to happy news: my web-client work is more or less integrated into (my test branch of) the volity.net website, and it works on all browsers I can be bothered to care about, including Opera (yes, I have tested it on my Wii) and both MSIEs. I'm going to push to take it live by month's end.
It's technically not slippage, because my original deadline was Sept. 30. Let us ignore all the boasting about earlier releases I did a month ago.
I do all my JavaScript development on Firefox + Firebug, and Safari generally follows suit without any extra work. It took me an hour or two on Saturday to make it Opera-compatible, figuring out that it didn't like how I was handling cookies. Opera seems to insist that you set the cookie header used for subsequent AJAX calls with the DOM's
It took all day Sunday to get the MSIEs in line. They are turds and I hate them. Their only redeeming feature in this matter is the surprising fact that both 6 and 7 had the same problems, and I got both to work simultaneously.
The IE problems, each of which took far too long to isolate:
Working with Microsoft software as a developer makes me so angry. It makes me angrier than thinking about the current American government and its foreign policy, because I usually burn through that in a few minutes. But working with Microsoft means wading around waist-deep in a vat of pure shit for hours. It gives me a hate that can last for days afterwards. I really hope I can minimize exposure to it as the web client project moves forward.
It's technically not slippage, because my original deadline was Sept. 30. Let us ignore all the boasting about earlier releases I did a month ago.
I do all my JavaScript development on Firefox + Firebug, and Safari generally follows suit without any extra work. It took me an hour or two on Saturday to make it Opera-compatible, figuring out that it didn't like how I was handling cookies. Opera seems to insist that you set the cookie header used for subsequent AJAX calls with the DOM's
document.cookie
property, and no other way will do. Fine, whatever.It took all day Sunday to get the MSIEs in line. They are turds and I hate them. Their only redeeming feature in this matter is the surprising fact that both 6 and 7 had the same problems, and I got both to work simultaneously.
The IE problems, each of which took far too long to isolate:
- IE silently ignores requests to add <tr>s to <table>s via the DOM
appendChild
method. You must instead add them to a <tbody> which is itself a child of the table. Seriously, what the fuck; who uses <tbody> normally? - IE caches the result of each AJAX call, and subsequent calls to that same URL (a very common polling pattern) will result in no request at all being made, but instead a silent return of the old value, so it looks like it made a request. You can get around this by (meaninglessly) adding the current time to the URL's query string, or adding a bogus
If-Modified-Since
header to the request. (On the plus side, this made me finally add decent logging to my server-side daemon, since I couldn't figure out what was going wrong without it.) - For the life of me, I couldn't use any Prototype.js methods to refer to elements that had been added to the DOM tree since the document's original rendering. I finally punted, adding such elements to some global arrays upon creation (with apologetic code comments noting how fucking stupid MSIE is) and just accessing those instead later on.
Working with Microsoft software as a developer makes me so angry. It makes me angrier than thinking about the current American government and its foreign policy, because I usually burn through that in a few minutes. But working with Microsoft means wading around waist-deep in a vat of pure shit for hours. It gives me a hate that can last for days afterwards. I really hope I can minimize exposure to it as the web client project moves forward.
no subject
Date: 2007-09-24 11:38 pm (UTC)