Django on .Net

You can run Django in Iron­Python under .Net. Awe­some. A Windows-based server is sud­denly a choice again, which is… fan­tas­tic. Mostly for pip­ing doc­u­ments through MS Office prod­ucts for index­ing and PDF gen­er­a­tion, because OO.o is great with Word docs but not so great — font siz­ing issues, etc. — with other things, espe­cially Pow­er­Point, which could account for up to a quar­ter of the con­tent con­tributed by users, I’d say. So I can run native MS Office -> Post­Script export -> ps2pdf processes, and MS Office -> Hor­ri­ble XML -> Scrub markup fil­ters -> Search index, with­out hav­ing to bat­tle with Wine, etc.

Of course, the sec­ond process would prob­a­bly ben­e­fit from using OO.o as a pro­cess­ing envi­ron­ment, but that’s equally achiev­able on a Win­dows or *nix platform.

So many fears about plat­form (OS and lan­guage) have been suf­fi­ciently allayed. Which is kind of annoy­ing, because, all of a sud­den, .Net is actu­ally an option. I’m still con­fused over data­bases though, so there’s plenty of befud­dle­ment to go around. Ulti­mately it doesn’t mat­ter a great deal if we find the right devel­oper (for what­ever lan­guage… except obscure things like Smalltalk and Ruby … oh did I say that? … doo be doo — just for future-proofing/maintenance rea­sons), which, hope­fully, we will. Another meet­ing about money for this thing is hap­pen­ing on Decem­ber 13th, so prayer is very wel­come for that! I want $35,000 to spend over about two and a half months to pay one other devel­oper and out­source design, as well as myself, of course (the front-end dude). By the end of that time we’ll hope­fully have an absolutely fan­tas­tic solu­tion that will mag­i­cally pro­pel (not that I really want to use Pro­pel, because that’s for PHP ;-)) itself for­ever… yeah, right.

We’ve got a half-baked busi­ness plan for this thing (by half-baked, I mean it’s all stuff I’ve writ­ten and the real gurus haven’t had any­thing to do with the num­bers, etc., so it’s not really autho­r­a­tive) that should get it out of the red by a cou­ple of months in (which is ridicu­lously quick… another rea­son to think it’s half-baked) and allow for clean­ing up all the bits we missed in the hec­tic two and a bit months it was orig­i­nally thrown together in, but, at the same time, it’s going to be par­tially depen­dent on licensed, pub­lished (dead tree) con­tent (i.e. not just user-contributed stuff, which, longer term, will hope­fully account for the bulk of sales — the profit mar­gin is lower, but it’s also eas­ier to move more units because of the sheer scope of con­tent we’re hop­ing will be available) — so because we’re licens­ing that rev­enue is going to be eaten into by pub­lish­ing divi­sion and other con­tent sources.

All of that is, of course, depen­dent on peo­ple want­ing to use these things (they do, but from there it’s a ques­tion of mak­ing the prod­uct known to them and mak­ing adop­tion easy) and being okay with shar­ing stuff they’ve writ­ten. Some knee-jerk reac­tions have been neg­a­tive to that, but the objec­tions were accom­pa­nied by acknowl­edge­ment of a need to think more about what shar­ing con­tent is doing — that is, why we’re both­er­ing to cre­ate this site anyway.

Which, I have realised, I have not shared here yet. I want to write it another time because I think I’m get­ting clearer at explain­ing what we’re try­ing to do every time I try, so it’s no bad thing repeat­ing myself. Here’s a brief overview of what Josh does (or, is try­ing to do) at Youth­works.

# by Josh on November 30th, 2006 Tags: , , , , , ,
| No Comments »

Notables and quirky distinctions

Shaun Inman has redesigned. It’s not visu­ally as rad­i­cal (or gim­micky) as the last two, but con­cep­tu­ally, tech­ni­cally, and cre­atively it is far more stunning.

“The four stripes down the left-hand side of each page of this site pro­vide ambi­ent tem­po­ral con­text to the item cur­rently dis­played — as does the bright­ness of the back­ground color and over­all con­trast of the page you are viewing.”

A few months back I’m so sure I would have dis­missed that as a fine load of waf­fle indeed. “Ambi­ent tem­po­ral con­text”? Puh-leeaassee. But it does actu­ally make sense. Almost in an Edward Tufte kind of way. It’s excit­ing and dynamic and auto­mated and what­ever else (pre­sum­ably because of his brain being abnor­mally advanced and adept at ninja JavaScript­ing + less obvi­ous back­end things, etc.), but it actu­ally does so to an end.

The visual rep­re­sen­ta­tions are use­ful. One will dis­cover chronol­ogy very rapidly, or per­haps sim­ply under­stand with greater pre­ci­sion, the tem­po­ral nature of con­tent fea­tured. It feels on first glance wanky as the way that the word “sym­po­sium” is bandied around in academic-parlance when speak­ing of what nor­mal peo­ple would term a con­fer­ence, but it’s really not.

I think there’s some­thing about geek cul­ture that lets us be a lit­tle eclec­tic. A lit­tle ironic (social­ist imagery for self gain?). There’s a dif­fer­ence, of course, between straight “geek cul­ture” and IT cul­ture — IT cul­ture is peo­ple stuck in a cubi­cle writ­ing code. Geek cul­ture, as I define it (because I iden­tify with it), is more about ridicu­lous man­i­festos and spec­u­la­tion about the next wave and pur­su­ing possibly-never-eventuating ideas. Like Parakey, for exam­ple, which scares me (would scare me) if it ever got anywhere.

Yes, even the young and hip in our midst are afraid of change. Not that that would be me. I’ll take my free designer’s drinks where I can but at the end of the day (that is, in about an hour’s time) I’m still an ill-defined gen­er­al­ist. Which is a self-effacing way of say­ing strategist/integrator. Which is a pre­ten­tious way of say­ing broad knowl­edge of dubi­ous depth.

Labels aside, it’s inter­est­ing to observe one thing that demar­cates (in the view of a char­ac­ter I met today known as RLS) con­tent man­age­ment sys­tems from blog plat­forms. I was stunned to hear a fairly seri­ous web devel­oper (even if we dis­agree on MVC and behaviour/content/presentation con­cepts) dis­miss con­tent man­age­ment sys­tems as “the worst thing that ever hap­pened to the web”. A few hor­ror sto­ries about migra­tion later (and a few “Josh, you really haven’t been around long enough to know” looks, no doubt) and it all started to make sense. The prob­lem wasn’t migra­tion or data (yes, even data) or closed/open source or any of the usual com­plaints, but users. And the flex­i­bil­ity that users demand and that con­tent man­age­ment sys­tems have never will­ingly provided.

This is the sec­ond para­graph of the sec­ond big idea of this blog post: I have no way to dis­tin­guish and define this para­graph as belong­ing to the sec­ond big idea. I would love to be able to have been able to put the open­ing two words of the last para­graph (“Labels side”) in small cap­i­tals to demon­strate the start of a new sec­tion. I can’t. My soft­ware doesn’t let me do that — or, if it does, it does so in a way that isn’t scal­able and seman­ti­cally sound. Or, if it does let me do so in a way that is scal­able and seman­ti­cally vir­tu­ous (both in an inter­nal data struc­ture (rela­tional DBs and so forth) and seman­tic markup (HTML, XML, XHTML) con­text) then it’s nigh on impos­si­ble to use and makes so much work it’s infi­nitely faster for me to write a Dreamweaver tem­plate, lock it, and cre­ate new pages man­u­ally based around this. Case in point, ezpub­lish. Full points for exten­si­bil­ity and flex­i­bil­ity, abstracted data struc­tures, etcetera, but a big fat fail for mak­ing this prac­ti­cally use­ful. Hav­ing to reload the web­page or change views in order to put a photo into a doc­u­ment is not accept­able — media library is great, but not if it takes me away from my con­tent for a moment.

The point is, tools get in the way often in ways com­pletely for­eign to hack-it-and-manage-it-yourself Frontpage-esque ways of think­ing. Accord­ing to RLS, this is par­tic­u­larly offen­sive in light of its sim­i­lar­i­ties to bad man­age­ment practice.

You don’t stand over your employ­ees wield­ing a club in order to make them do things your way. You pro­vide them with facil­i­ties to let them get the job done as best they can, and tools to enable them to inno­vate and improve your busi­ness processes, rather than play­ing the auto­crat and cre­at­ing automa­tons who don’t inno­vate and don’t think, either. As we can all imag­ine, non-thinking users are quite dan­ger­ous if you’ve got a hole any­where for them to fall in to. (Unless you’re work­ing in school IT, in which case think­ing users are the infi­nitely greater risk!)

There­fore, con­tent man­age­ment sys­tems are con­stric­tive and evil. I went from a posi­tion of want­ing to exclaim “what are you on, that’s com­pletely insane, step away from that data­base!” to being con­vinced when he told me we were think­ing along the same lines. So what’s my song that sounds so similar?

In a few points, some­thing like this:

  • Struc­tured data is good.
  • Inter­op­er­abil­ity is essen­tial and good.
  • Users are dumb.
  • Users are smart enough to want good tools they can use, even if they don’t always have the lan­guage to describe what they want.
  • Good tools let you struc­ture data with­out think­ing about it.
  • Good tools take advan­tage of struc­tur­ing data as a part of users exist­ing work­flow and busi­ness processes, and don’t increase admin­is­tra­tive burdens.
  • Good tools let you manip­u­late data and recy­cle it and re-envisage it in pow­er­ful, clear, and excit­ing contexts.

One of these things is not like the other one…

But most of it is. RLS empha­sised the impor­tance of flex­i­bil­ity. I do that, too. Only my flex­i­bil­ity is based around bend­ing (or bet­ter, design­ing) the tool to make it accom­mo­date user require­ments prop­erly, rather than dis­miss­ing the tool and return­ing to abstract seman­tics and poorly defined data struc­tures (i.e. none except by HTML markup). Of course, I’m biased, and am pos­si­bly mis­rep­re­sent­ing his thought.

In fact, there were sev­eral impor­tant qual­i­fi­ca­tions to what he had said. This the­ory applies only to large bod­ies of text (in this case, record­ings of semi-legal pro­ceed­ings), not to other con­tent types. For exam­ple, CRM tools are accept­able. Photo man­age­ment, pre­sum­ably, would also be accept­able. That all makes sense. Most curi­ous was the idea that blog­ging util­i­ties were accept­able, whilst con­tent man­age­ment sys­tems were not.

Yes.

The the­ory is sim­ple enough: blogs are some­thing you give users and say “here, have this, work with it and manip­u­late it as you will”, whilst con­tent man­age­ment sys­tems are some­thing foisted upon users by middle-upper-management. Unfor­tu­nately, to me, this seems more like what I imag­ine an anti-uni-IT-service cam­paign run by Social­ist Alliance would sound like. That is, not an objec­tion to the tools them­selves, but merely the bureau­cracy behind these.

It’s not quite that sim­ple, though.

Blog users do have a rep­u­ta­tion for tak­ing things in unusual direc­tions. Think about cat­e­gories. We kicked off with those and then grew out of them. So all of a sud­den we had tags, instead. Then tag clouds. Then folk­sonomies. Sure, some of these things are gim­micks that are going to die off, but the point is there’s scope for inno­va­tion that tra­di­tional con­tent man­age­ment sys­tems wouldn’t nec­es­sar­ily take kindly to. (Good ones would, but that’s besides the point, because I have a sneak­ing sus­pi­cion RLS hasn’t encoun­tered any well-written, exten­si­ble, con­tent man­age­ment sys­tem). So blogs are quite dif­fer­ent in that regard, and very much descrip­tivist with their con­tent — that is, they take it and let it grow as it will, some­what organ­i­cally, and gen­er­ally kick back and let users take their course. No pre­scrip­tivism here.

So there we go. Josh rolls elit­ist design/usability con­cepts, geek cul­ture, labels, inter­gen­er­a­tional con­flict, a dis­cus­sion of con­tent man­age­ment ver­sus blogs, and lin­guis­tics all into one blog post. Now what cat­e­gory do I stick this in?

Sunrise Family website

A screen capture of the Sunrise Family website

The site

This is the vaguely alluded to web­site of a few days ago, for Seven Network’s break­fast show (I refuse to describe any such com­mer­cial net­work dri­vel as “cur­rent affairs”!), Sun­rise. The Sun­rise Fam­ily is essen­tially an incentive/loyalty scheme vaguely akin to Triple M’s (recently-abandoned… doubt­less to be re-released in nearly exactly the same form under a dif­fer­ent brand) Freq Club and Enter­tain­ment Book–style dis­counts. There might be more later on, but that seems to be about it so far as what’s there right now. And, truth be told, I’m not really sure what else is com­ing… I’d love to replace Sunrise’s bor­ing ROSwall form with some­thing akin to the infa­mous Flash Just Let­ters inter­ac­tive fridge thingo, though maybe in an add-only type way, which would link in to view­ers’ exist­ing Fam­ily login (i.e. so they don’t have to enter their name every time, etc.), but that’s just an idea of mine.

The tech­nol­ogy

So, the deals.

The inter­face is using AJAX, presently with inline onClick trig­gers — because, unfor­tu­nately, I’m not quite good enough to make it pull the data from the ID… though, if you view source, I’ve setup the ID’s to have two pieces of data in there. If any­one can tell me how to write an event han­dler that con­verts an ID into a string which I can then feed to an onClick han­dler (and, server-side, explode() using PHP) I’m still very keen to fix that “prop­erly”. The ID’s have two data ele­ments because the Deals inter­face is designed to add sup­port for mul­ti­ple states (i.e. localised offers, etc.) in the future. And they’re pre­fixed by d_ because, obvi­ously, valid iden­ti­fiers can’t start with a num­ber. D can stand for “deal” or “data”, whatever :-)

As for how the AJAX is pulling down data, I’m just using inner­HTML, because it works in pretty much every­thing and is lots faster and lots sim­pler than “real” DOM meth­ods, espe­cially here. Observe the “Details” pane on the right of that page, and how there are dif­fer­ent num­bers of para­graphs of text, dif­fer­ent types of data (lists, anchors, etc.), then con­sider how ridicu­lous it would be to use DOM script­ing there. Euu­u­uc­cch. So, I’m not-quite stan­dard but per­fectly com­fort­able about that. I am, how­ever, using HTML 4.01 as the doc­type. There is no rea­son to use XHTML, and I’m not happy to use XHTML and not serve it prop­erly. And, if I serve it prop­erly, it’s too likely to break (parsers spit the dummy when encoun­ter­ing bad XHTML, because tol­er­ance is zero) for a pro­duc­tion site. Fur­ther, obvi­ously, inner­HTML doesn’t work when doc­u­ments aren’t served/parsed as any­thing other than text/html.

I’d rather do absolutely awe­some HTML 4.01 than valid but mediocre (and ulti­mately point­less, see­ing as it’s not being parsed as XML even) XHTML.

In other nifty technology-related stuff, Yahoo!7’s part­ner­ship means (hope­fully) that Seven will up the ante in terms of what tech­nolo­gies they’re unfurl­ing. For us, this means tak­ing a step for­ward and pro­vid­ing syn­di­ca­tion ser­vices (both Atom and RSS for­mats) for the deals. For Seven as a whole? Well, maybe they’ll start to get rid of their once-ubiquitous table-based lay­outs, and (maybe) embrace more of an open broad­cast­ing par­a­digm in line with their web strat­egy — assum­ing Yahoo! are direct­ing that in any way, and/or that Seven’s online team have open minds — I don’t really know and haven’t per­son­ally dealt with any­one there, so I’ll just assume they must have a hand­ful of cluey peo­ple on board!

The RSS and Atom feeds won’t be avail­able if you’re check­ing it out on Mon­day, but it’ll likely be run­ning by the end of the week. For Yahoo! users, this means they can add Sun­rise Fam­ily Deals to their per­son­alised page (but, seri­ously, who uses por­tals? I never under­stood that whole thing). For every­one else, you should be able to down­load a feed reader and add the feeds. I’d love to have a page telling peo­ple how to do this on the site, but imag­ine Yahoo! would object. So I’m say­ing it here: the peo­ple that mat­ter know how to do it! (Though, I imag­ine, the “peo­ple that matter” — you, dear reader — aren’t par­tic­u­larly reg­u­lar Sun­rise view­ers. Or, like me, never Sun­rise view­ers. Heh.)

We’ve also imple­mented a spot of JavaScript to fix text-selection in Inter­net Explorer. My lay­out is pretty insane in terms of the sheer quan­tity of absolutely posi­tioned ele­ments, which broke that func­tion­al­ity in Inter­net Explorer. One quick ques­tion to the WSG mail­ing list later, some­one had pro­vided a JavaScript fix (which we had to edit a lit­tle bit to make work prop­erly, because we had prob­lems with flick­er­ing ele­ments even with cache enabled).

The eye-candy

I’ve imple­mented use­less (but rather cool) eye-candy on the Deals page in the Details pane when­ever a new deal is selected. A vari­a­tion of the Fade Any­thing Tech­nique, which is only meant to be pretty. No orig­i­nal­ity is claimed, we’ve had this tech­nol­ogy all millennium.

Acces­si­bil­ity

Dis­able JavaScript and you lose the fades, and use a lit­tle more band­width as the entire page reloads for every item you click. In terms of non-visual user agents with JavaScript dis­abled, I’ve put the “Details” above the list of offers in source-order, and on every reload they only hear “Sun­rise Fam­ily. Link: Skip to main con­tent” (pre­sum­ing they select the link) before get­ting to the actual details, so I’m fairly happy on that front.

Addi­tion­ally, I’ve got the “header” from Yahoo!7 last in source-order, so any­one with assis­tive tech­nolo­gies don’t have to skip over that EVERY TIME they change the page. It was a lit­tle painful to fig­ure out, not in the least because Yahoo’s sup­plied uni­ver­sal header isn’t at all nice for sites that are built prop­erly — i.e. with web stan­dards and acces­si­bil­ity in mind — but I much pre­fer it this way. This is also some­thing we had to achieve silently and with­out com­plain­ing, because, whilst any­one who has a clue about web acces­si­bil­ity will imme­di­ately see this is a good idea, mar­ket­ing peo­ple would con­ceiv­ably think: “But we want peo­ple to see our search bar more often!”. Er, no, you don’t achieve any­thing by piss­ing off users. No mat­ter, we pulled it off with­out mak­ing any noise about it!

We’re server-side sniff­ing for Fire­fox and hand­ing it an “Add Yahoo!7 to the Fire­fox Search Box” link (which, inci­den­tally, has par­tic­u­larly hor­rid inline JavaScript — but I don’t care because the only UA it’s being served to can do some­thing use­ful with it), whilst IE users get a “Make this my home­page” link in its place. Yahoo’s ver­sion (which you can see on Seven’s — pure Flash, *oblig­a­tory shud­der* — Aus­tralian Open web­site, though I think that ver­sion (of the header, not the web­site) might now be dep­re­cated) uses JavaScript for that, but it was fairly obtru­sive and, see­ing as we have the abil­ity to do that server-side, I’d much rather reduce page weight.

In terms of acces­si­bil­ity gen­er­ally speak­ing, I’ve bun­dled in all the usual good­ies such as a skip to main con­tent link, as well as skip to login on the front page, base font size of 100.01%, and rel­a­tive font siz­ing through­out… but exten­sive image replace­ment tech­niques mean that the head­ers are prob­a­bly sub-optimal in terms of vis­i­bil­ity. This one is out of my con­trol, and every­one else in the work­place seems to love small text (even Lyn, who seems to often put on glasses to read things on a screen… go fig­ure!) so I wasn’t going to fight too hard about it. All other text will scale pretty well, with the excep­tion of the deals — because the lay­out is so tight, it’s only really pos­si­ble to go up one, maybe two size steps in most browsers.

We’re lack­ing any explicit acces­si­bil­ity state­ment, and we’re also lack­ing access keys. Mostly because I’m con­vinced access keys are prac­ti­cally use­less, and rarely bother to imple­ment them. (On forms, there are never enough but­tons for access keys and/or there’s no log­i­cal com­bi­na­tion avail­able, and every­where else it sort of seems a bit point­less unless every­thing has an access key. Where do you draw the line?)

This site is inter­est­ing to me because, even though it’s a tele­vi­sion audi­ence, I still can’t make assump­tions about how peo­ple will be brows­ing. PDA devices, for exam­ple, would strug­gle with our built-for-1024 lay­out had we done it with tables. For this site, PDA/mobile users are real­is­tic: for exam­ple, if some­one inci­den­tally is near a Wendy’s store and remem­bers they might’ve seen some­thing on the Sun­rise web­site but can’t remem­ber the details, they can quickly and pain­lessly look it up.

Fur­ther, the site also has to cater for peo­ple with cog­ni­tive or motor dis­abil­i­ties. For cog­ni­tive dis­abil­i­ties, one thing in our favour is that we’ve pro­vided a short sum­mary of each deal before a more heavy-duty full­text item. For users with motor dis­abil­i­ties, the entire web­site should be acces­si­ble via tab­bing — includ­ing the JavaScript-enabled Deals page.

I lost an argu­ment regard­ing target=“_blank”, but will even­tu­ally win this point. A hand­ful of adver­tise­ments — includ­ing those for intra-network links, such as for the Seven Store — open in new win­dows, which I am most cer­tainly not a fan of. All exter­nal links, how­ever, should have the rel attribute set to exter­nal. There is unfor­tu­nately no visual cue asso­ci­ated with this. Links I count as my biggest area of defeat in this web­site, which is pretty good (as in, I’d rather it just be that than some­thing more sig­nif­i­cant such as iframe usage, enor­mous usabil­ity prob­lem though new win­dows may present).

Inline JavaScript is com­pletely unre­lated to acces­si­bil­ity in light of the way this has been imple­mented. Admit­tedly, it would be advan­ta­geous to use event han­dlers in place of inline JavaScript (and we will be think­ing that to our­selves as we look at the traf­fic sta­tis­tics), but from an acces­si­bil­ity per­spec­tive it has very lit­tle impact. Stan­dard HREF’s are defined, and caught with Javascript using return false; No func­tion­al­ity is lost. I much pre­fer this method to scat­ter­ing iframes through­out the site! At any rate, I’m still try­ing to resolve this one, acces­si­bil­ity related or not. It’s a mat­ter of per­sonal pride, I suppose.

The Styles and Bugs

The entire design (done in-house by Dacien) is awe­some (in my opin­ion — if I didn’t think it was, I just would have kept quiet about it), but very tight.

So tight, in fact, that I had to set outline:0; on some links to stop Fire­fox from break­ing the lay­out (1 pixel dif­fer­ence) when a link was active (as they are when you click a deal and it’s caught by JavaScript rather than actu­ally reload­ing the page — the link remains active), adding a 1 pixel dot­ted bor­der. Cross browser sup­port is pretty awe­some — it should be good in IE back to 5 — Opera, Safari, Kon­queror, and even (mostly) IE 5.2 Mac are happy. Fire­fox deserves spe­cial men­tion: it has so many lit­tle (big for this site) things wrong with it that it’s often rather painful to make work prop­erly. In fact, of all browsers men­tioned, Fire­fox 1.0.x (on non-Windows plat­forms) is the only one whose behav­iour I’m def­i­nitely not happy with (mostly because I expect bet­ter from it, but also because it gets some things hor­ri­bly wrong).

Such as, for exam­ple, the “Meet the Fam­ily” page. It works per­fectly or near-perfectly in every other browser, but cer­tain Fire­fox vari­ants on cer­tain plat­forms ren­der only the first two items in the “Sun­rise Team” list(/right col­umn, if you’ll excuse my presentational-speak) on first load… and then ren­ders per­fectly if you refresh the page. This is what I meant by my “pre­dictable inad­e­quacy” post of a few days ago. I’m fairly cer­tain it’s some­thing to do with floated list items, but pos­si­bly not.

Another bug is (also in Fire­fox — notic­ing a trend, any­one? No, I didn’t build for IE. I wrote about 90% of the stylesheet sit­ting in Fire­fox 1.5.x using Chris Pederick’s Web Dev exten­sion, and both that browser and Opera oper­ate near-perfectly) Fire­fox 1.0.x’s pen­chant for adding scroll­bars where they’re not required with overflow:auto (see front page on non-Windows plat­forms, and the Deals page — lots of style overlap/common classes there, so this is to be expected).

By far the most inter­est­ing ren­der­ing dif­fer­ence I encoun­tered build­ing a lay­out this tight was between Inter­net Explorer/Windows XP with and with­out Win­dows Themes enabled. Yes, it does make a dif­fer­ence. Inter­face wid­gets shouldn’t really inter­fere with styles at all, IMO, but they did here. The solu­tion basi­cally entailed shav­ing off a cou­ple of pix­els where required, so I didn’t come up with some­thing par­tic­u­larly inno­v­a­tive for it!

Sum­mary

In all, I’m pretty happy with the site. Seven’s inter­nal Online team appar­ently noticed/complimented our team on the absence of lay­out tables, which I (per­haps arro­gantly) take with some degree of indif­fer­ence: peo­ple shouldn’t be build­ing sites with tables for that pur­pose any­way. If we are to be com­ple­mented, then it should be on the design (and, as part of that, achiev­ing a design this ‘tight’ with CSS), or on the usabil­ity ben­e­fits realised by intel­li­gent inte­gra­tion of AJAX, or the devel­op­ment pace (again, par­tially because of the flex­i­bil­ity CSS gives us), or maybe on light­weight, seman­tic code as a cost-saving mechanism.

Truth be told, I now believe we may have even gone a lit­tle over­board with the tables elim­i­na­tion. If I could do it all again, the Deals page would fea­ture a table instead of a list, and I’d use DOM script­ing to insert/delete records rather than replace the “state” part with inner­HTML. The markup might gain a (very) lit­tle bit of weight, but it’d be worth it. It would, of course, remain seman­ti­cally sen­si­ble and com­pletely acces­si­ble. It’d prob­a­bly be more seman­ti­cally sen­si­ble, actu­ally. I realised a table would work great about two days after I’d fin­ished styling the list, and thought “I’ve put way too much effort into this to pull it now”, but felt like Dave Shea must have after build­ing a “pseudo table” with­out real­is­ing. At least it wasn’t that complex!

Any­way, I’m really inter­ested to hear what peo­ple have to say about the site. We’re being plugged every half hour on Sun­rise tomor­row morn­ing from 6am, and will be anx­iously watch­ing the server to see what, exactly, the effect of pro­mo­tion on a show with 4 mil­lion view­ers daily has on band­width, etc. I’ve also installed an AWstats tracker to col­lect aggre­gate data (as on this site) which we’ll parse later on (assum­ing the hor­ri­ble mon­ster that it’s run­ning on, Zeus, out­puts normal-ish log files for me! Oh, and it doesn’t sup­port mod_rewrite, but instead has some retarded alter­na­tive that seems like a cross between VBA and Apple­Script — and fails as much as the lat­ter did in terms of actual ease of use, despite try­ing to use human lan­guage. It’s very dumb.) to fig­ure out how Aus­tralia is doing in terms of browsers, oper­at­ing sys­tems, screen res­o­lu­tions, JavaScript sup­port, and the like. Should be incred­i­bly inter­est­ing stuff, and I can’t wait!

Atom 1.0 photo feed

I fig­ured I’d go with Atom when cre­at­ing an app to extract photo feeds for the gallery here, because it’s touted as the next best thing since sliced bread. It’s not. Maybe that’s just coz I’m over­tired and have spent too long star­ing at Feed Val­ida­tor, but prob­a­bly not. What the hell is with a lim­i­ta­tion on the num­ber of times you can have the same value on an update date? Maybe I posted mul­ti­ple things at once! Or had sched­uled posts. What­ever. Either way, a limit of two on this is ridicu­lous and… seem­ingly com­pletely superfluous.

As is the require­ment to have a <con­tent> ele­ment in the feed. For this gallery feed, that really isn’t nec­ces­sary. I con­ceded that point, but am now regret­ting it: this means I am now bound to intro­duce a fea­ture I really don’t want in the future! Note to self: next time a val­ida­tor comes along, abscond. (Mmm… scones…)

On the record, right now: I know the feed is invalid, and I don’t give a crap. I haven’t even tested it in a feed reader yet: my eyes are doing all the pars­ing right now. You can check it out at http://www.joahua.com/photostack/atomiccat.php — thus named because of Atom and cat-scan. More bugs presently exist than I care to name, or even think about, but my neck feels like I’ve been sit­ting at this com­puter for about a day (it’s been a few hours…), and I really need sleep. Will resolve later, in the mean­time… add that feed (application/atom+xml) to your feed reader at your own risk. It’s highly likely to break stuff.

I’ll also setup mod_rewrite rules some­time so it looks like a real feed. Sometime…

# by Josh on October 20th, 2005 Tags:
| 8 Comments »

Evolution: Least of many evils?

No, this isn’t a creationism/evolution post. But, if you care, I think that whole debate is kinda stu­pid because it’s hardly as though the two are nec­es­sar­ily exclusive.

Now that that’s out of the way (to self: must stop choos­ing obscure titles), I thought I’d announce I’ve decided that Evo­lu­tion really isn’t so bad as it’s cracked up to be (by me, in pre­vi­ous posts. Yeah, so I’m con­tra­dict­ing myself in the space of 24 hours. It doesn’t really mat­ter how long it takes me to con­tra­dict myself, because any­one capa­ble of using the search tool on this site pro­fi­ciently can jux­ta­pose the two con­tra­dict­ing pieces quite anachro­nis­ti­cally. Yeah! Eng­lish buzz­words! C’mooonnnnn, Thurs­day!). I spent part of today (more than I should have) check­ing out other clients, and I’ve decided that, unless I want to go with mutt or some­thing (I’m not going to say how tempt­ing that was lest I be pushed into a big geek hole and buried with free soft­ware), I’m actu­ally doing okay.

Which is kind of a depress­ing thought, truth be told. Not that Evo­lu­tion is acu­tally that bad, but it’s fairly far from per­fect. It’s more sta­ble now I’ve re-installed Ubuntu (gosh that sounds like Another Oper­at­ing Sys­tem), and lit­tle inter­face quirks are becom­ing slowly less sig­nif­i­cant, but I’m… rather annoyed that it ate my con­tacts list. Or, that GAIM ate my con­tacts list and Evo­lu­tion let it.

Actu­ally, I just remem­bered that I haven’t tried Opera’s mail client in sev­eral years… so I might do that. It doesn’t inte­grate par­tic­u­larly well (I’m cur­rently try­ing to fig­ure out some arcane com­mand to make the damn thing print, because it’s not read­ing from my print­cap file or some­thing, and I use it to print in pref­er­ence to Fire­fox because Firefox’s print ren­der­ing is sec­ond to none in the bad-quality stakes), but I’d rather a stand­alone app that worked really well over a vaguely-integrated app that often crashed and allowed other appli­ca­tions to steal its data, as well as mak­ing backup in open for­mats impossible.

Speak­ing of open for­mats, I’ve dis­cov­ered that OpenOffice.org 2 is stor­ing its doc­u­ments in Open­Doc­u­ment for­mat. This means that the SXW exten­sion is now ODT. I’m a lit­tle dis­ap­pointed that this seems to be binary data rather than some­thing like XML… although it seems there are ele­ments of that to it, but they’re scat­tered amongst binary junk. The XML part might just be OO.o’s imple­men­ta­tion rather than a core part of the spec, I don’t really know. There appears to be some kind of XSLT going on, judg­ing from ref­er­ences to styles.xml in the test doc­u­ment I cre­ated. Another pos­si­bil­ity is that there are sev­eral pieces of data con­tained in some kind of com­pressed for­mat, but I don’t know exactly what and don’t have the skills to find out! Or, at least, don’t know where to start and hence efforts are frus­trated. It’s prob­a­ble all this infor­ma­tion is on the OpenOf­fice or Oasis web­sites, but I can’t be both­ered look­ing. I care, but not that much.

My main motive in dis­cov­er­ing what’s going on here is the poten­tial inte­gra­tion of OpenOf­fice with web frame­works, and how open for­mats (par­tic­u­larly SGML/XML based ones) sim­plify pars­ing by an order of magnitude.

ImageBox Flash gallery app

I stum­bled across this post on RMW Web Publishing’s blog today, and it struck me the app they men­tioned could be use­ful for doing this whole CD/DVD thing for the year 12 photo web­site.

The purveyor’s web­site is hor­ri­bly Flash encum­bered (i.e. I’d have never found it if I were look­ing for it in a search engine — I actu­ally tem­porar­ily lost the developer’s URL for a bit there, and had to trawl through my brows­ing his­tory to find it again!), but the app itself is rather use­ful if you’re look­ing for a run-from-the-desktop gallery kinda thing. My only qualm is the dif­fi­culty of gen­er­at­ing meta­data for it to do inter­est­ing stuff with, but a quick spot of shell script­ing should see that prob­lem met, hope­fully. (Or even just nag­ging Ben until he hacks sup­port for this gizmo into Cat-scan natively… wink wink? :P) This is the kind of app that’s a prime can­di­date for XML appli­ca­tion, not in the least because of Flash’s reput­edly excel­lent sup­port for that kind of stuff… but it uses bor­ing and rather con­fus­ing (mostly because I don’t speak Ger­man so a few words are odd) flat files instead. With that one caveat, it’s an oth­er­wise help­ful appli­ca­tion. Just don’t make the mis­take of con­fus­ing appli­ca­tions with web­sites.

Up, down, flying around

Apolo­gies for what’s been a bumpy cou­ple of days here, as Michael’s host­ing begins the shift to a FreeBSD-based server (for shared host­ing… his own website’s been run­ning off it for some time now). Rollercoaster.

Just to make things per­fectly clear, he’s host­ing this web­site for free, and it’s absolutely incred­i­ble most of the time (espe­cially con­sid­er­ing it’s run­ning off a con­sumer Inter­net connection!) — but it’s likely to have been a slightly spo­radic time in terms of being able to access things, and in terms of things work­ing prop­erly… for exam­ple, the Pho­to­Stack RSS feed and page itself was out the other day, which I’d have attrib­uted to a lack of lib_xml and/or GD(2) sup­port, but appar­ently this was just the fault of a cer­tain per­mis­sions acci­dent. Sim­i­larly, send­mail (or the equiv­a­lent being used) was out as a result of per­mis­sions — appar­ently it’s back up, but the con­tact form (which, inci­den­tally, needs a recode) still isn’t work­ing, and nei­ther (so far as I can tell) is my mod­er­a­tion update emails.

For you, dear reader, this sim­ply means that the con­tact form is tem­porar­ily out of action, and your com­ments may take slightly longer than usual to approve (yes, at this stage, all com­ments are being man­u­ally approved, to effec­tively com­bat spam. I’ll review the sit­u­a­tion when­ever I get around to switch­ing to 1.5 — prob­a­bly some time in the next two weeks).

# by Josh on March 17th, 2005 Tags: , ,
| 1 Comment »