<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Josh.st &#187; AJAX</title>
	<atom:link href="http://josh.st/tag/ajax/feed/" rel="self" type="application/rss+xml" />
	<link>http://josh.st</link>
	<description>Web, English, 中国, and various geekosity</description>
	<lastBuildDate>Wed, 18 Apr 2012 23:37:52 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Seek IT: Web Programmer for new Christian youth site</title>
		<link>http://josh.st/2007/03/02/seek-it-web-programmer-for-new-christian-youth-site/</link>
		<comments>http://josh.st/2007/03/02/seek-it-web-programmer-for-new-christian-youth-site/#comments</comments>
		<pubDate>Fri, 02 Mar 2007 02:10:42 +0000</pubDate>
		<dc:creator>Josh</dc:creator>
				<category><![CDATA[CYIADA]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[code versioning systems]]></category>
		<category><![CDATA[CVS]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[programmer]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[relational database]]></category>
		<category><![CDATA[SMS]]></category>
		<category><![CDATA[sydney]]></category>
		<category><![CDATA[web-based communication/publishing tools]]></category>
		<category><![CDATA[young developer]]></category>

		<guid isPermaLink="false">http://josh.st/blog/2007/03/02/seek-it-web-programmer-for-new-christian-youth-site</guid>
		<description><![CDATA[Fancy that. Please be praying we find someone good (or, suitably sinful but repentant and appropriately talented, because there’s nearly no such thing as a good person). Ad proper after the break: A Christian youth organisation (Anglican Youthworks) is looking for a programmer to commence immediately as part of a small team. This is a [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://it.seek.com.au/users/apply/index.ascx?JobID=8797350">Fancy that</a>.</p>
<p>Please be praying we find someone good (or, suitably sinful but repentant and appropriately talented, because there’s nearly no such thing as a good person).</p>
<p>Ad proper after the break:<span id="more-1300"></span></p>
<blockquote><p> <img src="http://cyiada.com/v2/cyiadaprojectlogo.png" alt="Youthworks.net | CYIADA" /></p>
<p class="templatetext">A Christian youth organisation (<a href="http://youthworks.net/">Anglican  Youthworks</a>) is looking for a programmer to commence immediately as part of a  small team.<br />
This is a project-based role in which you will be equipping youth  ministries across Sydney with web-based communication/publishing tools and  quality evangelical content.</p>
<p>If you have experience in:</p>
<ul>
<li>building dynamic websites using MVC-style PHP, Python or Java</li>
<li>with a relational database (MySQL/PostgreSQL preferably, but it’s a clean  slate!)</li>
<li>publishing PDF documents securely online</li>
<li>creating AJAX-powered interfaces securely</li>
<li>connecting to 3rd party service providers using APIs (payment gateways, SMS,  etc.)</li>
<li>using code versioning systems (Subversion or CVS)</li>
</ul>
<p>We’d love to  hear from you.</p>
<p>Knowledge of frameworks such as Django, Struts or similar  would be beneficial.</p>
<p>Learn more about the project at <a href="http://cyiada.com/">http://cyiada.com/</a></p>
<p>This high-visibility  project would suit a young developer with a passion for sharing Christ and  building up his disciples through the Internet.</p>
<p>Interested applicants  please email <a href="mailto:joinus.code@cyiada.com">joinus.code@cyiada.com</a></p>
<p class="details">Josh Street<br />
Anglican Youthworks | CYIADA Project</p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://josh.st/2007/03/02/seek-it-web-programmer-for-new-christian-youth-site/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SilverStripe CMS and the difficulty of CYIADA</title>
		<link>http://josh.st/2007/02/16/silverstripe-cms-and-the-difficulty-of-cyiada/</link>
		<comments>http://josh.st/2007/02/16/silverstripe-cms-and-the-difficulty-of-cyiada/#comments</comments>
		<pubDate>Fri, 16 Feb 2007 00:18:59 +0000</pubDate>
		<dc:creator>Josh</dc:creator>
				<category><![CDATA[CYIADA]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[consultant]]></category>
		<category><![CDATA[programmer]]></category>
		<category><![CDATA[web practitioner]]></category>
		<category><![CDATA[WSG]]></category>

		<guid isPermaLink="false">http://josh.st/blog/2007/02/16/silverstripe-cms-and-the-difficulty-of-cyiada</guid>
		<description><![CDATA[I stumbled across this PHP5 CMS today (via a WSG member post) and it looks pretty good. I’m a little concerned about the (very)-AJAX admin side of things, but didn’t spend much time digging into it so it might gracefully degrade (maybe). It’s almost frustrating to find such good and mature CMS products on the [...]]]></description>
			<content:encoded><![CDATA[<p>I stumbled across <a href="http://www.silverstripe.com/">this PHP5 CMS</a> today (via a WSG member post) and it looks pretty good. I’m a little concerned about the (very)-AJAX admin side of things, but didn’t spend much time digging into it so it might gracefully degrade (maybe).</p>
<p>It’s almost frustrating to find such good and mature CMS products on the market and not have any need to use them for CYIADA… I spent the last week mostly trying to shape fairly simple data models for different aspects of the website and it’s rapidly becoming clear just how structurally complex multi-tiered community/community generated content sites are. At least in terms of relational DB complexity, yes, this is bigger than MySpace.</p>
<p>Anyway, SilverStripe looks worth a look for simpler endevours.</p>
<p>The complexity is mostly introduced where users become authors, which defies traditional CMS workflow altogether. It’s also far more structured than Wiki systems are, and far more private. Privacy is being balanced against flexibility which is being balanced against community and <em>all</em> of these are being met with time/cost concerns.</p>
<p>But I like to keep telling myself I don’t really know what I’m talking about and getting a programmer will solve all these dilemmas … yeah, right.</p>
<p>I’ve got sick of sitting on my hands and just want to be a web practitioner again. I know the product inside out, it’s been planned to the hilt, stakeholders are universally intrigued/waiting for it, and I’m being impatient and feeling generally like charging forwards. Which is, in all probability, not the best way to be approaching things.</p>
<p>These two consultants came in a week ago and we explained the project to them and (what I heard was) they said “we want flowcharts and scope documents”. I’ve killed a few trees in my time, but the next person to help me in that isn’t going to be a consultant telling me to rehash (yet again — I’ve written documents in so many forms, website copy so many times, etc.) what I’ve got without any further input. I’m in this weird place now where waiting for a programmer is nearly <span style="font-style: italic">required</span> for further planning action, and everyone but me appears to want more planning <span style="font-style: italic">before</span> action… meanwhile, I’m writing models for Django and scaring myself with the complexity and learning Adobe products better and generally landing squarely back in front-end territory, which is where I’ve comfortably been for the last two or so years. Well, with the exception of Adobe products, which I only <a href="/blog/2006/07/27/photowhat">finally caved to</a> last year… whatever :P</p>
]]></content:encoded>
			<wfw:commentRss>http://josh.st/2007/02/16/silverstripe-cms-and-the-difficulty-of-cyiada/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>The Need for AJAX shopping carts</title>
		<link>http://josh.st/2006/11/30/the-need-for-ajax-shopping-carts/</link>
		<comments>http://josh.st/2006/11/30/the-need-for-ajax-shopping-carts/#comments</comments>
		<pubDate>Thu, 30 Nov 2006 04:05:25 +0000</pubDate>
		<dc:creator>Josh</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Geek]]></category>
		<category><![CDATA[AJAX]]></category>

		<guid isPermaLink="false">http://joahua.com/blog/2006/11/30/the-need-for-ajax-shopping-carts</guid>
		<description><![CDATA[I always thought the script.aculo.us drag’n’drop-shop demo was stupid. It seemed illogical and only really practical for stupid puncy little shops with five or ten products — certainly, with everything listed on the same page. Then it hit me — this is perfect for shuffling documents around. CYIADA (see-uh-da), is (partially) about selling documents and [...]]]></description>
			<content:encoded><![CDATA[<p>I always thought the <a href="http://demo.script.aculo.us/shop">script.aculo.us drag’n’drop-shop demo</a> was stupid. It seemed illogical and only really practical for stupid puncy little shops with five or ten products — certainly, with everything listed on the same page.</p>
<p>Then it hit me — this is perfect for shuffling documents around. <a href="/blog/2006/11/30/what-josh-does-at-youthworks">CYIADA (see-uh-da)</a>, is (partially) about selling documents and resources electronically — and it does that with pre-paid credits. This, of course, means that there doesn’t have to be any cumbersome checkout stage. Better than <a href="http://shopify.com/">Shopify</a> (excellent though that is), potentially.</p>
<p>Drag documents you like when browsing into a floating “My Resources” bin on the side of the page, AJAX is used to throw up a “confirm purchase” DIV which presents simple “yes”/“oops” options, and keep moving. It’d be trivial to modify the confirm view to have a “purchase for my whole group” checkbox (which would, of course, change the cost), too. Anything beyond that might be too complex.</p>
<p>Of course, there would be graceful degradation for those without JavaScript turned on… because someone has to ruin the party :P</p>
]]></content:encoded>
			<wfw:commentRss>http://josh.st/2006/11/30/the-need-for-ajax-shopping-carts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RI revisited, Web standards, AJAX, LDAP and architecture</title>
		<link>http://josh.st/2006/11/23/ri-a-few-months-on-and-a-bit-about-databases/</link>
		<comments>http://josh.st/2006/11/23/ri-a-few-months-on-and-a-bit-about-databases/#comments</comments>
		<pubDate>Wed, 22 Nov 2006 23:47:45 +0000</pubDate>
		<dc:creator>Josh</dc:creator>
				<category><![CDATA[Geek]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[CYIADA Global administration]]></category>
		<category><![CDATA[DHTML]]></category>
		<category><![CDATA[Feedback]]></category>
		<category><![CDATA[leader]]></category>
		<category><![CDATA[legacy systems]]></category>
		<category><![CDATA[Organisational Unit]]></category>
		<category><![CDATA[RDBMS]]></category>
		<category><![CDATA[relational database]]></category>
		<category><![CDATA[Search engine]]></category>
		<category><![CDATA[Summer School]]></category>
		<category><![CDATA[Tino]]></category>
		<category><![CDATA[web development world]]></category>
		<category><![CDATA[Web Standards]]></category>
		<category><![CDATA[webmaster administrator]]></category>

		<guid isPermaLink="false">http://joahua.com/blog/?p=1207</guid>
		<description><![CDATA[I visited Raw Ideas today and was really quite excited by what I saw. They’re about to move office again so I was popping in to return the keys (I still had them even though I haven’t worked there for several months now) and generally catch up. Tino was working on a tape library application [...]]]></description>
			<content:encoded><![CDATA[<p>I visited <a href="http://www.rawideas.com.au/">Raw Ideas</a> today and was really quite excited by what I saw. They’re about to move office again so I was popping in to return the keys (I still had them even though I haven’t worked there for several months now) and generally catch up. Tino was working on a tape library application for archiving DVCPro and Mini DV and HD(V, mostly) footage in a really searchable and generally more-manageable-than-shelves-full-of-labels kind of way, and he was pretty keen to show it off. Freakin’ awesome stuff. Aside from some DHTML gimmicks (fading rollovers, etc., stuff that you think is cool when you’re developing it but does nothing but irritate you once you have to sit down and finally <em>use</em> the application for five minutes!) it was great to see he’s using <a href="http://script.aculo.us/">Scriptaculous</a> for some genuinely useful AJAX-based functionality.</p>
<p>Because it’s a library, it’s basically one big search engine. Which means that autocomplete is a really handy thing to have, and being able to click on a piece of information and edit it straight away (so, taking plain text and converting it into a <code>textarea</code> or <code>input</code> field for editing immediately, without a separate admin view) is absolutely priceless for moving through a library quickly. This is so the way content editing should be heading — I’m hoping we all get there in the end.</p>
<p>But even more exciting than Javascript usability gimmicks was to see that he’s still using CSS, now more extensively and without assistance, and with kick-arse semantics. I looked at the source of his page quickly and the only complaint I had was his use of a span for a header instead of an Hx… totally wonderful to see a few months after the resident standards nazi (that would be me) has taken off!</p>
<p>So we threw around ideas about that (including ripping timecode off DV tape and trying to set marker points, importing EDL’s for use inside the library, automating transcoding processes and exporting H.264 or FLV for previews, and a couple of other equally fun things), then eventually started chatting about what I’m doing over here at <a href="http://www.youthworks.net/">Youthworks</a> these days.</p>
<p>I think I made him kind of jealous. I’ve seriously got one of the best jobs in the web development world right now. I get to come up with stuff that’s genuinely useful for users (and productive for the Gospel, yada yada — that’s the implicit goal of all of this), entirely in response to their needs, without being burdened in particular by history, or legacy systems that need to integrate, or any major competitors — it’s wonderful. So we started talking about platforms and whatever and I said I was considering Django (and got a big tick accordingly, which was nice) with an RDBMS (i.e. MySQL, just because that’s pretty much all I have experience with insofar as DBs go) but then outlined a bit more about the project and he recommended an LDAP system pretty strongly.</p>
<p>LDAP is a directory-based database which is strongly heirarchical and finely granulated in nature. Which is bloody useful when you’ve got a user structure five layers deep:</p>
<p><img src="/blog/wp-content/2006/11/simple-cyiada-universe.png" alt="Simple CYIADA universe" /></p>
<p>But, of course, moderators do not “contain” leaders any more than leaders “contain” youth. All of these tiers exist independently of one another. They are internally defined by their extrinsic relations, even though their user experience of the website will vary depending on their heirarchical position. The latter makes LDAP seem entirely sensible, but the former definition of personal identity (that is, what constitutes a “self” or independent user entity — a Distinguished Name, in LDAP-speak) seems to rile against that directory concept.</p>
<p>“Moderator” is, in fact, a property of “Leader”. That is, it is a quality belonging to the user, who belongs to the group “leader”. Users should be unique and belong to an Organisational Unit (again, in LDAP speak) that reflects their role within the system. Thus, moderatorship generally will necessitate belonging to two OUs: one does not cease to lead within their own group context if they are appointed as a sitewide moderator — likewise, moderators <em>may</em> be appointed who do not have any formal role as a leader of a youth group. (This problem may be circumvented by creating such users at a CYIADA Global administration level, instead — for example, I do not lead a youth group in the target demographic, and I volunteer to edit content occasionally: I am not <em>the</em> webmaster administrator (hypothetically), but require moderation powers without being a leader associated with any group).</p>
<p><img src="/blog/wp-content/2006/11/cyiada-universe-groups.png" alt="CYIADA universe with groups" /></p>
<p>Groups, of course pose their own set of stupid difficulties. They appear to have no heirarchy at all: indeed, even where they could (for example, a Katoomba Convention branch with KYCK, KYLC, KEC, etc. sub-branches, or a CMS branch with Summer School, MMM, etc. sub-branches) this isn’t particularly useful (and, consequently, not desirable).</p>
<p>They don’t constitute OUs, because OUs have already been used to assign roles (probably a bastardisation of standard X.520 practice, but so much of this will be I don’t particularly care). The only way I could see it working would be by defining multiple Organi[s/z]ation components, but even then…</p>
<p>I don’t know. My head has been in relational database space for so long I want everyone to have a numeric identifier linking them to another table chock full of organisation records. It makes me comfortable. But then, LDAP would manage authentication and roles, if not association, and appears to generally have potential to make life a <em>lot</em> easier. So perhaps there’s some way to connect directory and RDBMS happily?</p>
<p>Feedback more than welcome. I’m not worried about platform specifics, just about the theoretical architecture of such a beast (and my conception of LDAP in general). If you’re reading this and know anything about OpenLDAP or AD or RHCS or any other platform, or just know about connecting to existing sources and extending them, please leave a comment and make me happy :-)</p>
]]></content:encoded>
			<wfw:commentRss>http://josh.st/2006/11/23/ri-a-few-months-on-and-a-bit-about-databases/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zimbra kicks some butt by abandoning Web 2.0</title>
		<link>http://josh.st/2006/10/12/zimbra-kicks-some-butt-by-abandoning-web-20/</link>
		<comments>http://josh.st/2006/10/12/zimbra-kicks-some-butt-by-abandoning-web-20/#comments</comments>
		<pubDate>Thu, 12 Oct 2006 07:02:58 +0000</pubDate>
		<dc:creator>Josh</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Geek]]></category>
		<category><![CDATA[Web Standards]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[technology partners]]></category>
		<category><![CDATA[web interface]]></category>

		<guid isPermaLink="false">http://joahua.com/blog/2006/10/12/zimbra-kicks-some-butt-by-abandoning-web-20</guid>
		<description><![CDATA[I was sure I’d blogged about this open-source AJAX email platform thingy in the past, but apparently not. No matter. They used to be all about their AJAXy web interface (my impression, as is always the case here) but now seem to have dropped that and are running along the open-source-for-corporates track that seems to [...]]]></description>
			<content:encoded><![CDATA[<p>I was sure I’d blogged about this <a href="http://www.zimbra.com/">open-source AJAX email platform thingy</a> in the past, but apparently not. No matter. They used to be all about their AJAXy web interface (my impression, as is always the case here) but now seem to have dropped that and are running along the open-source-for-corporates track that seems to work so well these days. Checking out their key customers and technology partners would suggest they’re definitely doing something right, and it’s beyond the shininess of their website.</p>
<p>Modest gradients, no shadows, occasional (even rare) curves (logo excepted, but I think the logo sucks/is childish so whatever), and tables for layout.</p>
<p>Oh, wait…</p>
]]></content:encoded>
			<wfw:commentRss>http://josh.st/2006/10/12/zimbra-kicks-some-butt-by-abandoning-web-20/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress 2 is horrible</title>
		<link>http://josh.st/2006/02/05/wordpress-2-is-horrible/</link>
		<comments>http://josh.st/2006/02/05/wordpress-2-is-horrible/#comments</comments>
		<pubDate>Sun, 05 Feb 2006 05:30:16 +0000</pubDate>
		<dc:creator>Josh</dc:creator>
				<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Web Standards]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[AJAX administration]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[WYSIWYG  editor]]></category>

		<guid isPermaLink="false">http://joahua.com/blog/2006/02/05/wordpress-2-is-horrible</guid>
		<description><![CDATA[Okay, I’ve tried it properly now. It sucks. Sure, it’s probably more usable for someone-who-really–should–be-using-WordPress.com-or-Blogger-or-Spaces or something, but not for anyone who’s self-hosting. Its WYSIWYG editor is doing a grave disservice to the web as a whole, the default theme, Kubrick, is a semantic thing-of-nightmares, and its AJAX administration interface fails to degrade fairly comprehensively. [...]]]></description>
			<content:encoded><![CDATA[<p>Okay, I’ve tried it properly now. It sucks. Sure, it’s probably more usable for someone-who-really–<em>should</em>–be-using-WordPress.com-or-Blogger-or-Spaces or something, but not for anyone who’s self-hosting. Its WYSIWYG editor is doing a grave disservice to the web as a whole, the default theme, Kubrick, is a semantic thing-of-nightmares, and its AJAX administration interface fails to degrade fairly comprehensively. Yuck.</p>
<p>I’m using it now because I want to put something quick and dirty together, but there’s no way I’m seriously considering changing anything else to WordPress 2.0.x, nor, in the future, will I consider building other sites around it. There’s one blog-only site (this is unusual: we’re not that groovy and Web 2.0 — RSS feeds seem to be an uphill battle!) we’re going to do this week at work: that can be my initial foray into <a href="http://textpattern.com/">TextPattern</a>.</p>
<p>From there, who knows (Who knows all). If I don’t like it/it’s not flexible enough (Fortunately, WordPress is rather flexible. I’m not <em>stuck</em> with it’s crappiness, I’d just prefer not to have to deal with it in the first place.), it’s probably back to the land of roll-your-own solutions again. There are a few decent-looking Rails-esque frameworks for PHP floating about out there at the minute, so I might try using one of those. Apparently Rails/Ruby is ridiculously slow compared to PHP, so I’d rather not use it and really like it and be trapped in this framework that’s very Web 2.0, very expendable, and very crap.</p>
<p>Can you tell I’m embittered with web (2.0) products at the minute?</p>
]]></content:encoded>
			<wfw:commentRss>http://josh.st/2006/02/05/wordpress-2-is-horrible/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sunrise Family website</title>
		<link>http://josh.st/2006/01/30/sunrise-family-website/</link>
		<comments>http://josh.st/2006/01/30/sunrise-family-website/#comments</comments>
		<pubDate>Sun, 29 Jan 2006 13:01:32 +0000</pubDate>
		<dc:creator>Josh</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Geek]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Usability]]></category>
		<category><![CDATA[Web Standards]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[AppleScript]]></category>
		<category><![CDATA[assistive technologies]]></category>
		<category><![CDATA[australia]]></category>
		<category><![CDATA[Australian Open]]></category>
		<category><![CDATA[Dave Shea]]></category>
		<category><![CDATA[DOM]]></category>
		<category><![CDATA[Freq Club]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[internal Online team]]></category>
		<category><![CDATA[Internet Explorer]]></category>
		<category><![CDATA[Internet Explorer/Windows XP]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[online team]]></category>
		<category><![CDATA[operating systems]]></category>
		<category><![CDATA[PDA]]></category>
		<category><![CDATA[search bar]]></category>
		<category><![CDATA[Seven Store]]></category>
		<category><![CDATA[step forward]]></category>
		<category><![CDATA[Sunrise]]></category>
		<category><![CDATA[syndication services]]></category>
		<category><![CDATA[Triple M]]></category>
		<category><![CDATA[web accessibility]]></category>
		<category><![CDATA[Web Dev extension]]></category>
		<category><![CDATA[web strategy]]></category>
		<category><![CDATA[Wendy's store]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Windows XP]]></category>
		<category><![CDATA[XML]]></category>
		<category><![CDATA[Yahoo!]]></category>

		<guid isPermaLink="false">http://joahua.com/blog/?p=868</guid>
		<description><![CDATA[The site This is the vaguely alluded to website of a few days ago, for Seven Network’s breakfast show (I refuse to describe any such commercial network drivel as “current affairs”!), Sunrise. The Sunrise Family is essentially an incentive/loyalty scheme vaguely akin to Triple M’s (recently-abandoned… doubtless to be re-released in nearly exactly the same [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.sunrisefamily.com.au/"><img src="/blog/wp-content/2006/01/srf.jpg" alt="A screen capture of the Sunrise Family website" /></a></p>
<h3>The site</h3>
<p>This is the <a href="/blog/2006/01/27/something-unpredictable">vaguely alluded to</a> website of a few days ago, for Seven Network’s breakfast show (I refuse to describe any such commercial network drivel as “current affairs”!), <a href="http://seven.com.au/sunrise/">Sunrise</a>. The Sunrise Family is essentially an incentive/loyalty scheme vaguely akin to Triple M’s (recently-abandoned… doubtless to be re-released in nearly exactly the same form under a different brand) <a href="http://www.triplemrocks.com.au/freqclub/">Freq Club</a> and <a href="http://www.entertainmentbook.com.au/">Entertainment Book</a>–style discounts. 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 coming… I’d love to replace Sunrise’s boring <a href="http://seven.com.au/sunrise/form_roswall">ROSwall form</a> with something akin to the infamous Flash <a href="http://www.flashcomguru.com/apps/letters/">Just Letters interactive fridge thingo</a>, though maybe in an add-only type way, which would link in to viewers’ existing Family login (i.e. so they don’t have to enter their name every time, etc.), but that’s just an idea of mine.</p>
<h3>The technology</h3>
<p>So, <a href="http://sunrisefamily.com.au/current/content/deals/">the deals</a>.</p>
<p>The interface is using AJAX, presently with inline onClick triggers — because, unfortunately, 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 anyone can tell me how to write an event handler that converts an ID into a string which I can then feed to an onClick handler (and, server-side, explode() using PHP) I’m still very keen to fix that “properly”. The ID’s have two data elements because the Deals interface is designed to add support for multiple states (i.e. localised offers, etc.) in the future. And they’re prefixed by <code>d_</code> because, obviously, valid identifiers can’t start with a number. D can stand for “deal” or “data”, whatever :-)</p>
<p>As for how the AJAX is pulling down data, I’m just using innerHTML, because it works in pretty much everything and is lots faster and lots simpler than “real” DOM methods, especially here. Observe the “Details” pane on the right of that page, and how there are different numbers of paragraphs of text, different types of data (lists, anchors, etc.), then consider how ridiculous it would be to use DOM scripting there. Euuuuccch. So, I’m not-quite standard but perfectly comfortable about that. I am, however, using HTML 4.01 as the doctype. There is no reason to use XHTML, and I’m not happy to use XHTML and not serve it properly. And, if I serve it properly, it’s too likely to break (parsers spit the dummy when encountering bad XHTML, because tolerance is zero) for a production site. Further, obviously, innerHTML doesn’t work when documents aren’t served/parsed as anything other than <code>text/html</code>.</p>
<p>I’d rather do absolutely awesome HTML 4.01 than valid but mediocre (and ultimately pointless, seeing as it’s not being parsed as XML even) XHTML.</p>
<p>In other nifty technology-related stuff, Yahoo!7’s partnership means (hopefully) that Seven will up the ante in terms of what technologies they’re unfurling. For us, this means taking a step forward and providing syndication services (both Atom and RSS formats) for the deals. For Seven as a whole? Well, maybe they’ll start to get rid of their once-ubiquitous table-based layouts, and (maybe) embrace more of an open broadcasting paradigm in line with their web strategy — assuming Yahoo! are directing that in any way, and/or that Seven’s online team have open minds — I don’t really know and haven’t personally dealt with anyone there, so I’ll just assume they must have a handful of cluey people on board!</p>
<p>The RSS and Atom feeds won’t be available if you’re checking it out on Monday, but it’ll likely be running by the end of the week. For Yahoo! users, this means they can add Sunrise Family Deals to their personalised page (but, seriously, who uses portals? I never understood that whole thing). For everyone else, you should be able to download a feed reader and add the feeds. I’d love to have a page telling people how to do this on the site, but imagine Yahoo! would object. So I’m saying it here: the people that matter know how to do it! (Though, I imagine, the “people that matter” — you, dear reader — aren’t particularly regular Sunrise viewers. Or, like me, never Sunrise viewers. Heh.)</p>
<p>We’ve also implemented a spot of JavaScript to fix text-selection in Internet Explorer. My layout is pretty insane in terms of the sheer quantity of absolutely positioned elements, which broke that functionality in Internet Explorer. One quick question to the WSG mailing list later, someone had provided a JavaScript fix (which we had to edit a little bit to make work properly, because we had problems with flickering elements even with cache enabled).</p>
<h3>The eye-candy</h3>
<p>I’ve implemented useless (but rather cool) eye-candy on the Deals page in the Details pane whenever a new deal is selected. A variation of the <a href="http://www.axentric.com/aside/fat/">Fade Anything Technique</a>, which is only meant to be pretty. No originality is claimed, we’ve had this technology all millennium.</p>
<h3>Accessibility</h3>
<p>Disable JavaScript and you lose the fades, and use a little more bandwidth as the entire page reloads for every item you click. In terms of non-visual user agents with JavaScript disabled, I’ve put the “Details” above the list of offers in source-order, and on every reload they only hear “Sunrise Family. Link: Skip to main content” (presuming they select the link) before getting to the actual details, so I’m fairly happy on that front.</p>
<p>Additionally, I’ve got the “header” from <a href="http://www.yahoo7.com.au/">Yahoo!7</a> last in source-order, so anyone with assistive technologies don’t have to skip over that EVERY TIME they change the page. It was a little painful to figure out, not in the least because Yahoo’s supplied universal header isn’t at all nice for sites that are built properly — i.e. with web standards and accessibility in mind — but I much prefer it this way. This is also something we had to achieve silently and without complaining, because, whilst anyone who has a clue about web accessibility will immediately see this is a good idea, marketing people would conceivably think: “But we <em>want</em> people to see our search bar more often!”. Er, no, you don’t achieve anything by pissing off users. No matter, we pulled it off without making any noise about it!</p>
<p>We’re server-side sniffing for Firefox and handing it an “Add Yahoo!7 to the Firefox Search Box” link (which, incidentally, has particularly horrid inline JavaScript — but I don’t care because the only UA it’s being served to can do something useful with it), whilst IE users get a “Make this my homepage” link in its place. Yahoo’s version (which you can see on Seven’s — pure Flash, *obligatory shudder* — <a href="http://ausopen.seven.com.au/australianopen2006/">Australian Open website</a>, though I think that version (of the header, not the website) might now be deprecated) uses JavaScript for that, but it was fairly obtrusive and, seeing as we have the ability to do that server-side, I’d much rather reduce page weight.</p>
<p>In terms of accessibility generally speaking, I’ve bundled in all the usual goodies such as a skip to main content link, as well as skip to login on the front page, base font size of 100.01%, and relative font sizing throughout… but extensive image replacement techniques mean that the headers are probably sub-optimal in terms of visibility. This one is out of my control, and everyone else in the workplace seems to love small text (even Lyn, who seems to often put on glasses to read things on a screen… go figure!) so I wasn’t going to fight too hard about it. All other text will scale pretty well, with the exception of the deals — because the layout is so tight, it’s only really possible to go up one, maybe two size steps in most browsers.</p>
<p>We’re lacking any explicit accessibility statement, and we’re also lacking access keys. Mostly because I’m convinced access keys are practically useless, and rarely bother to implement them. (On forms, there are never enough buttons for access keys and/or there’s no logical combination available, and everywhere else it sort of seems a bit pointless unless <em>everything</em> has an access key. Where do you draw the line?)</p>
<p>This site is interesting to me because, even though it’s a television audience, I still can’t make assumptions about how people will be browsing. PDA devices, for example, would struggle with our built-for-1024 layout had we done it with tables. For this site, PDA/mobile users are realistic: for example, if someone incidentally is near a Wendy’s store and remembers they might’ve seen something on the Sunrise website but can’t remember the details, they can quickly and painlessly look it up.</p>
<p>Further, the site also has to cater for people with cognitive or motor disabilities. For cognitive disabilities, one thing in our favour is that we’ve provided a short summary of each deal before a more heavy-duty fulltext item. For users with motor disabilities, the entire website should be accessible via tabbing — including the JavaScript-enabled Deals page.</p>
<p>I lost an argument regarding target=“_blank”, but <em>will</em> eventually win this point. A handful of advertisements — including those for intra-network links, such as for the Seven Store — open in new windows, which I am most certainly not a fan of. All external links, however, should have the <code>rel</code> attribute set to external. There is unfortunately no visual cue associated with this. Links I count as my biggest area of defeat in this website, which is pretty good (as in, I’d rather it just be that than something more significant such as iframe usage, enormous usability problem though new windows may present).</p>
<p>Inline JavaScript is completely unrelated to accessibility in light of the <em>way</em> this has been implemented. Admittedly, it would be advantageous to use event handlers in place of inline JavaScript (and we will be thinking that to ourselves as we look at the traffic statistics), but from an accessibility perspective it has very little impact. Standard HREF’s are defined, and caught with Javascript using <code>return false;</code> No functionality is lost. I much prefer this method to scattering iframes throughout the site! At any rate, I’m still trying to resolve this one, accessibility related or not. It’s a matter of personal pride, I suppose.</p>
<h3>The Styles and Bugs</h3>
<p>The entire design (done in-house by Dacien) is awesome (in my opinion — if I didn’t think it was, I just would have kept quiet about it), but <em>very</em> tight.</p>
<p>So tight, in fact, that I had to set outline:0; on some links to stop Firefox from breaking the layout (1 pixel difference) when a link was active (as they are when you click a deal and it’s caught by JavaScript rather than actually reloading the page — the link <em>remains</em> active), adding a 1 pixel dotted border. Cross browser support is pretty awesome — it should be good in IE back to 5 — Opera, Safari, Konqueror, and even (mostly) IE 5.2 Mac are happy. Firefox deserves special mention: it has so many little (big for this site) things wrong with it that it’s often rather painful to make work properly. In fact, of all browsers mentioned, Firefox 1.0.x (on non-Windows platforms) is the only one whose behaviour I’m definitely not happy with (mostly because I expect better from it, but also because it gets some things horribly wrong).</p>
<p>Such as, for example, the “<a href="http://sunrisefamily.com.au/current/content/meet/">Meet the Family</a>” page. It works perfectly or near-perfectly in every other browser, but certain Firefox variants on certain platforms render only the first two items in the “Sunrise Team” list(/right column, if you’ll excuse my presentational-speak) on first load… and then renders perfectly if you refresh the page. This is what I meant by my <a href="/blog/2006/01/25/predictable-inadequacy">“predictable inadequacy”</a> post of a few days ago. I’m fairly certain it’s something to do with floated list items, but possibly not.</p>
<p>Another bug is (also in Firefox — noticing a trend, anyone? No, I didn’t build for IE. I wrote about 90% of the stylesheet sitting in Firefox 1.5.x using Chris Pederick’s Web Dev extension, and both that browser and Opera operate near-perfectly) Firefox 1.0.x’s penchant for adding scrollbars where they’re not required with overflow:auto (see front page on non-Windows platforms, and the Deals page — lots of style overlap/common classes there, so this is to be expected).</p>
<p>By far the most <em>interesting</em> rendering difference I encountered building a layout this tight was between Internet Explorer/Windows XP with and without Windows Themes enabled. Yes, it does make a difference. Interface widgets shouldn’t really interfere with styles at all, IMO, but they did here. The solution basically entailed shaving off a couple of pixels where required, so I didn’t come up with something particularly innovative for it!</p>
<h3>Summary</h3>
<p>In all, I’m pretty happy with the site. Seven’s internal Online team apparently noticed/complimented our team on the absence of layout tables, which I (perhaps arrogantly) take with some degree of indifference: people shouldn’t be building sites with tables for that purpose anyway. If we are to be complemented, then it should be on the design (and, as part of that, achieving a design this ‘tight’ with CSS), or on the usability benefits realised by intelligent integration of AJAX, or the development pace (again, partially because of the flexibility CSS gives us), or maybe on lightweight, semantic code as a cost-saving mechanism.</p>
<p>Truth be told, I now believe we may have even gone a little overboard with the tables elimination. If I could do it all again, the Deals page would feature a table instead of a list, and I’d use DOM scripting to insert/delete records rather than replace the “state” part with innerHTML. The markup might gain a (very) little bit of weight, but it’d be worth it. It would, of course, remain semantically sensible and completely accessible. It’d probably be <em>more</em> semantically sensible, actually. I realised a table would work great about two days after I’d finished styling the list, and thought “I’ve put way too much effort into this to pull it now”, but felt like <a href="http://www.mezzoblue.com/archives/2005/03/31/too_far/">Dave Shea must have after building a “pseudo table”</a> without realising. At least it wasn’t that complex!</p>
<p>Anyway, I’m really interested to hear what people have to say about the site. We’re being plugged every half hour on Sunrise tomorrow morning from 6am, and will be anxiously watching the server to see what, exactly, the effect of promotion on a show with 4 million viewers daily has on bandwidth, etc. I’ve also installed an AWstats tracker to collect aggregate data (as on this site) which we’ll parse later on (assuming the horrible monster that it’s running on, Zeus, outputs normal-ish log files for me! Oh, and it doesn’t support mod_rewrite, but instead has some retarded alternative that seems like a cross between VBA and AppleScript — and fails as much as the latter did in terms of <em>actual</em> ease of use, despite trying to use human language. It’s very dumb.) to figure out how Australia is doing in terms of browsers, operating systems, screen resolutions, JavaScript support, and the like. Should be incredibly interesting stuff, and I can’t wait!</p>
]]></content:encoded>
			<wfw:commentRss>http://josh.st/2006/01/30/sunrise-family-website/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Brilliant anti-AJAX comment</title>
		<link>http://josh.st/2006/01/17/brilliant-anti-ajax-comment/</link>
		<comments>http://josh.st/2006/01/17/brilliant-anti-ajax-comment/#comments</comments>
		<pubDate>Tue, 17 Jan 2006 10:38:32 +0000</pubDate>
		<dc:creator>Josh</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[author]]></category>
		<category><![CDATA[broadband]]></category>
		<category><![CDATA[buzzword-compliant site]]></category>
		<category><![CDATA[Dan]]></category>
		<category><![CDATA[distant server]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Injection Molder]]></category>
		<category><![CDATA[online content remains]]></category>
		<category><![CDATA[webmaster]]></category>

		<guid isPermaLink="false">http://joahua.com/blog/?p=855</guid>
		<description><![CDATA[Pinched in fulltext from a comment on a post regarding Web 2.0 (originally written for FT, so it’s not particularly geeked out). Such pages, however, tended toward dullness and infrequent updating. Or, to put it another way: Such pages tended to fulfill the original vision of the Web, which was to allow absolutely anyone to [...]]]></description>
			<content:encoded><![CDATA[<p>Pinched in fulltext from <a href="http://dangillmor.typepad.com/dan_gillmor_on_grassroots/2005/04/web_20_try_30.html#comment-5184623">a comment</a> on a post regarding Web 2.0 (originally written for <a href="http://www.ft.com/">FT</a>, so it’s not particularly geeked out).</p>
<blockquote cite="http://dangillmor.typepad.com/dan_gillmor_on_grassroots/2005/04/web_20_try_30.html#comment-5184623"><p><q>Such pages, however, tended toward dullness and infrequent updating.</q></p>
<p>Or, to put it another way: Such pages tended to fulfill the original vision of the Web, which was to allow absolutely anyone to publish information that might otherwise be lost to the public, in a way that allows it to be searched, indexed, bookmarked, and linked to related information. And accessed by absolutely anybody who’s looking for it.</p>
<p><strong>As opposed to today’s “dynamic” Web, where you need a broadband connection, an industrial-grade graphics workstation, and more plug-ins than a Roman orgy just to look up the atomic weight of molybdenum. Which you can’t bookmark because the URL is a dynamically-generated conglomeration of the hostname, your session ID, the phase of the moon, and the bra size of the webmaster’s current girlfriend, that doesn’t point to a page that’s actually stored on disk somewhere.</strong></p>
<p>As nifty as it is that people have found new ways to make use of HTTP and HTML, we seem to be slowly losing the very concept of “publishing” as “preserving a record of today for future recall”. Instead of being the equivalent of an “address” where one can “go” to retrieve information, the URL has become a “magic incantation” that instructs a distant server to perform some action that may or may not produce the same results as the last time it was used.</p>
<p>In some ways, that’s good: it’s nice to be able to use the same mechanism to say “Bring up the latest edition of Dan’s blog”, “Show me the current pressure and temperature readings of Injection Molder #7″, and “Display page 7 from our company’s 2003 annual report”.</p>
<p>But there’s some very scary Orwellian potential here, as well as the risk of exacerbating the Digital Divide by constantly ramping up the minimal platform needed to access much of the web. Those librarians Dan mentioned lately shouldn’t be the only ones worried about making sure that a large percentage of online content remains “dull” and “static”.</p></blockquote>
<p>I think the “Orwellian potential” bit is a load of scare-mongering crap (in relation to the other concerns posed in the article, at any rate), but everything else rings true.</p>
<p>I am, at present, working on the first large-scale project I’ve been involved in where &lt;a href=“http://en.wikipedia.org/wiki/AJAX/ title=“Asynchronous JavaScript and XML”&gt;AJAX</a> is being utilised. In this instance, yes, it was my call: yes, I do feel it’s justified (reasons include traffic, and the advantage of not having to reload an entire page — yes, it’s large scale enough for that to be significant — and simple usability, because the architecture is such that users will desire to move quickly between elements of content, and AJAX facilitates that. More details post-release). We’ve been very careful to preserve functionality in non-XMLHttpRequest enabled <abbr title="User Agent">UA</abbr> environments, but it’s still not perfect — bookmarking is one (minor, given the nature of the content) problem that still requires rectification: that’s one thing I’m hoping to resolve tomorrow (along with general CSS compatability back to IE 5, possibly 4 — but that’s not particularly relevant). The Javascript is not particularly “unobtrusive” (still using inline onclick), which I’m hoping to similarly resolve prior to launch, but it’s not of any particularly great consequence.</p>
<p>This is not a site to be archived, as the author of the comment above laments. But he shouldn’t. That wasn’t ever this site’s purpose, so I’m not particularly concerned if the markup isn’t prestine. Yes, there will be RSS/Atom syndication. It’s a fairly Web 2.0 buzzword-compliant site, though (I hope) not particularly unneccessarily adoptive of such technologies. We’ll see. </p>
]]></content:encoded>
			<wfw:commentRss>http://josh.st/2006/01/17/brilliant-anti-ajax-comment/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Roundcube</title>
		<link>http://josh.st/2005/11/02/roundcube/</link>
		<comments>http://josh.st/2005/11/02/roundcube/#comments</comments>
		<pubDate>Wed, 02 Nov 2005 08:18:22 +0000</pubDate>
		<dc:creator>Josh</dc:creator>
				<category><![CDATA[Geek]]></category>
		<category><![CDATA[Usability]]></category>
		<category><![CDATA[AJAX]]></category>

		<guid isPermaLink="false">http://www.joahua.com/blog/2005/11/02/roundcube</guid>
		<description><![CDATA[Roundcube is a cool AJAX webmail client. Via Karmakars]]></description>
			<content:encoded><![CDATA[<p><a href="http://roundcube.net/">Roundcube</a> is a cool AJAX webmail client.</p>
<p>Via <a href="http://karmakars.com/2005/11/02/roundcube/">Karmakars</a></p>
]]></content:encoded>
			<wfw:commentRss>http://josh.st/2005/11/02/roundcube/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>WWW SQL Designer</title>
		<link>http://josh.st/2005/10/24/www-sql-designer/</link>
		<comments>http://josh.st/2005/10/24/www-sql-designer/#comments</comments>
		<pubDate>Mon, 24 Oct 2005 10:46:30 +0000</pubDate>
		<dc:creator>Josh</dc:creator>
				<category><![CDATA[Geek]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[WWW SQL Designer  WWW SQL Designer]]></category>

		<guid isPermaLink="false">http://www.joahua.com/blog/2005/10/24/www-sql-designer</guid>
		<description><![CDATA[WWW SQL Designer Far out. This thing is incredible. Database design with AJAX… there’s a demo on the site, and you can download the app. Must play with. Incredible. Reduced to incomplete sentences by its awesomeness.]]></description>
			<content:encoded><![CDATA[<p><a href="http://ondras.praha12.net/sql/">WWW SQL Designer</a></p>
<p>Far out. This thing is incredible. Database design with AJAX… there’s a demo on the site, and you can download the app. Must play with. Incredible. Reduced to incomplete sentences by its awesomeness.</p>
]]></content:encoded>
			<wfw:commentRss>http://josh.st/2005/10/24/www-sql-designer/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: enhanced

Served from: josh.st @ 2012-05-23 10:43:52 -->
