January 24th, 2007
The line between code and documentation is blurring with the introduction of regimented documentation standards. In PHP reflection (and likely other languages as well) you can use reflection to programmatically access documentation blocks meaning you *could* make code dependant on information in your doc comments! Scary!
More scary is that I discovered this via a colleague who was considering using this. You could argue it conforms to the DRY principle because we were looking to add more strict control of return types implemented in methods that are derived from an interface we defined. This would require us to redefine information already part of our doc comments should we proceed without the reflection API.
For now we have elected not to proceed because it violates the rule of least surprise. Developers do not expect edits to comments affecting code conditionals and thus our effort to enforce correct use of interfaces could backfire causing exceptions in classes implementing our defined interfaces.
At some later date when the trend has continued and there is no line between code and API documentation or at such point we are confident our unit testing will prevent deployment of exceptions due to incorrect documentation we may reconsider this approach.
Posted in DRY, bug, communication, php, usability, web development | 2 Comments »
January 21st, 2007
There have been philanthropists in javascript development since the language was concieved by Brendan Eich. A few that I can point to as having provided tools and inspiration along my path in web development: Mike Foster and his excellent x library (and it predecessor) which just worked and added some bling to projects of a few years ago; Brent Ashley and the jsrs library code and examples which opened my eyes to a new form of optimisation I could use in the web applications I built; PPK for the never-ending resource that is quirksmode… I am sure you all could name others that facilitated your own web application careers - feel free to add to this article in the comments.
In more recent “web 2.0″ times it was the success of Sam Stephenson’s Prototype, defined by its syntactic sugar which reminded the web development community at large of the dual functional and OOP natures of Javascript (invigorating in the face of the millions of custom procedural functions that previously ran the web). This has driven the current increase in client-side scripting interest. Of course Prototype was also helped in part to the libraries which built on it such as Thomas Fuchs’ Scriptaculous and Open Rico and also those influenced by such as MooTools. I would argue that all this activity (and other developments) was itself fueled by the natural return to ascendancy of web development that was always imminent after the tech crash’s over-correction.
With exploration of Prototype (and Javascript in general) we also learned. We learned that messing with the Object.prototype is verboten and that there were better ways to include functionality than inlining everything. Ben Nolan’s Behaviour library demonstrated this best (well then, anyways, these days I now just include separate files which use the various selector functions in combination with the cross-browser Event Handler implementations found in each major library).
Mid-way through last year we were evaluating libraries, namely Prototype, Jquery, Dojo and YUI. YUI won out for a number of reasons. Jquery looked great but it wasn’t at version 1 yet and seemed to be changing on a weekly basis (for the better, but that was too much flux for a project destined for our end users). Prototype I had used in some of my demos but the documentation was sketchy and every example relied on inline script tags scattered through-out our templates. I trialled out Behaviour which was quite handy but some examples were not easily recreated when combined with Behaviour. We were also concerned that Prototype would not play well with others. We wanted to leave the door open to continue using other third-party libraries in the future.
Dojo looked awesome but again was low on useful documentation (They have much improved - in fact all libraries have, in this regard). The Dojo events package looked very cool with its AOP-style approach but I had reservations that it might add too much ramp-up time to our tight schedule.
YUI had a combination of API and example-driven documentation as well as coverage on all the key features we needed. Its namespace implementation was simple, allowing us to get in and comprehend their code quickly. Once undertaking the project we did find that the documentation could still have been much better, but such are the joys of open-source libraries and their documentation, right (php is an exception - the comments on the API pages was a stroke of genius)?
The last twelve months have seen Dean Edwards and John Resig and others team together to provide a cross-browser solution to detecting when the DOM content had completely loaded (at a time before assets such as images have completed downloading).
This month has seen Jack Slocum weigh in with faster DOM search functions, setting a new benchmark in the area that John Resig had previously thrown down the gauntlet. This sort of collective innovation is for the good of the community and is providing an accelerated environment of innovation. I don’t fully subscribe to information singularity as while I do think acceleration can be hyperbolic it will more likely form an ogilve, flattening at some point rather than continuing to approach infinite (there are, afterall, limits to our ability to process information and effeciently distribute it amongst the hive-mind that is the community that forms around any topic of learning).
Philosophic analysis of the phenomena aside I do think it is valuable to recognise the progress that has been made and the factors contributing it and encouraging everyone to continue providing and contributing to the environment that has allowed us all to flourish.
Posted in Ajax, Javascript, Yahoo, communication, complexity, tipping point, web development | 5 Comments »
January 14th, 2007
I’ve been using the mostly cool blogging firefox extension by performancing.com for at least 8 months now. There are a few irritations I have with the editor however for the most part these are issues I have with many formatted text editors out there (for instance when linking some text there is no obvious way to stop applying the link formatting - I always have to apply links last to get around this) so I am forgiving on these matters.
What I occured on Friday though was more than irritating, it cost me a detailed post. I was linking for somewhere to paste the links I was collecting for pasting on text once I finished drafting my post. I remembered a ‘Notes’ tab in the Performancing editor and thought I might be able to post it there. That would be conveniant. I saw two example “Notes” in there and clicked on one to see where it would let me input my Note. The text in the main editor was replaced with the text from the Note. Neat! I thought, I can switch between my draft and my notes right here in the editor! Now, how to switch back to my draft? 30 minutes of hunting around the interface and the forums brought me to the slow realisation that my work of earlier in the day was lost.
Why name something destructive with the innocuous title of “Notes”? Why not warn of non-obvious, destructive behaviour? The irony is that I am now using this feature to protect me from an event like this - I just have to remember to click ‘Save as Note’ first or suffer a similar event. I am, of course, now in the market for a good blog editor which will combine well with my web browser research on a single screen (for when I am using the laptop free of my second screen).
My silver lining is that events like these help create a stronger usability movement.
A new version of my original post is on its way - its taken a few days to build up to retyping it.
Posted in Javascript, bug, communication, usability, web development | 1 Comment »
December 10th, 2006
In these days of Google-mania it seems that Google has become the ultimate yardstick. I think this is strange as there is nothing standard about Google - it is the outlier, the edge-case and not definitely not representative of the market at large.
An unreasonable amount of speculation around Google and the companies seen to compete with them has an unnatural effect on people’s interpretation of the state of a business or validity of a strategy.
We’ve seen google become a verb (and yes people are googling on Yahoo as well) but to me the past-tense variation of this verb (’googled’) has another meaning, that of companies affected (positively or negatively) by the overblown nature of the Google-myth at present. To put this word in context I think Yahoo is currently being partially ‘googled’. ‘googled’, to a company undergoing this phenomenon, is probably also a synonym of any number of slang words for coitus.
Google products entering new spaces cause people both inside and outside companies in the same space to make irrational decisions. Strategies change, stock prices drop and, from my experience, often for naught - many companies will report that Google entering their space, despite their initial panic and countless crisis meetings, actually saw an upturn in their own businesses.
A phrase I have always been fond of is ‘the elephant in the room‘. It evokes a brilliantly comic scene in my mind of some very sincere looking people talking whilst carefully ignoring an elephant which is perched in the corner of the room. This image visits me frequently when reading discussion about the state of the Yahoo business. It seems that many posters, enamoured with the creativity of Google’s endless list of products, fail to acknowledge the presence of the most successful publisher on the internet.
I certainly don’t want to downplay the issues at Yahoo, they clearly have structural issues which need to be addressed but I can’t help but just point at that friggin elephant that just sits there quietly blinking in the corner. Its a room with glass windows so the general public can see the elephant and they actually spend quite a bit of their time looking at it. It collects their mail for them, provides them news, helps them shop… sure, it looks like a patchwork quilt because many groups of talented frankenstein-like specialists helped put him together whilst carefully avoiding talking to eachother… but he’s always doing more for the public and his public go to him first when they are in need of information or a tool.
Meanwhile, us, the industry-types, the money-people, the other animals in this room are all looking at the chimpanzee that can poop primary colors and are throwing it peanuts.
Posted in Google, Yahoo, humour | Comments Off
December 7th, 2006
I finally got started on some script to make IE handle firebug debug calls (console.debug etc.) gracefully and to display what it could when I read that a new (and apparently much changed) version was soon to be available.
Then when I actually got around to downloading it I find that they now package firebug with a cross-browser javascript-only library. Including this in your development environment by including the ‘Firebug Lite’ script in your pages presumably works like my script by defining a console object and providing the same external interface to Firebug proper. This then allows you to test in IE without IE choking on undefined functions such as console.debug() calls.
I should have written this code ages ago as I would have saved time in not accidentally checking in Firebug calls which broke IE testing for QA. I am glad they have addressed this (even though I lost an afternoon writing some redundant code) and I am also really impressed with the latest version of Firebug.
I think it might be time to include a build step in my project to allow me to remove Firebug debug calls from production code (as well as compress our css/js)
If you haven’t already - grab a beta copy of Firebug 1.0 Beta
Posted in Ajax, Javascript, web development | Comments Off
October 31st, 2006
I have been signing up to all sorts of web2.0 tools looking for a way to leverage my list of feeds. Many tools come close but have yet to offer quite the functionality with the level of completeness I have been after.
Matt Cutts, on commenting about the new Google customised search features, had this insight to share…
When I played with the first version, I wanted to avoid the standard stuff
where you plug in 1-2 sites and get a custom search engine that isn’t
blood-pounding-ly exciting (”Oh, a search box, and it searches. Great.”). So
what I did was take my feeds (I was using Bloglines at the time) and exported it
as an OPML file. Running a command like
cat export.opml | grep "title="
| cut -d'"' -f6 | grep -v '^$' | sort | uniq
was enough to get the
blog urls that I was reading (not the feed urls), and I threw those urls into
the custom search engine.
And just like that, *BOOM* I had a search engine that
covered 70+ blogs in the search/SEO industry. If I searched for [bug], it would
return search engine bugs, not bugs in general. OPML-import was so much fun that
the Co-op folks promised to support it (I know that importing from Bloglines
works; importing from Google Reader might still need a tweak to the OPML
parsing). It’s nice that every blogger can have a custom search engine that is
centered around their interests.
Smart guy, cuts straight through the gloss to a key use of this functionality. Hopefully they support a regular OPML import/sync from a fixed url (say a public newsgator OPML file…) so I can keep an engine up to date based purely on my web development blogs.
Combine that with certain del.icio.us links and now I have a massive information resource minus the majority of noise (you see I am not in the habit of bookmarking splogs and the like…).
In the mean time my dummy spit over that post still has me looking at other engines… A suggestion from a commenter got me back looking at snap.com. I’ve gotta say - its actually a joy to use! A recommend giving it a shot, its got liberal use of web2.0 features but in ways that really aid usability. The best feature by far being keyboard support.
Posted in Ajax, Google, communication, complexity, web development | Comments Off
October 26th, 2006
With the issues I am having with my Yahoo! account and the innanity of Google’s legal goons attempting to dictate the public’s use of language, I find myself wondering what my options are in regards to a new search provider. Of course, like most other web developers, I use Firefox predominantly (Firebug being a big part of the reason behind that) and therefore want to add a new default engine into the search dropdown it provides.
I wandered over to ask.com (they’ve always done a nifty thing here and there and might be able to provide the quality of searching i require). The URL is also nifty short in case I need to type it. The offer a pox looking toolbar that makes me think ‘Web Browser Helper Object’ (that is not good).
A quick wander through a few links on Ask I find this page…
Its been updated for IE7 to guide you through setting Ask as the default engine but then goes on to give directions for… Netscape Friggin’ Communicator!?! No quick add link for the ‘Ask’ engine? Wikipedia.org, Dictionary.com and even our ticketing system at work has implemented one of these… Why not Ask?
Has anyone switched? Anything worth checking out and potentially switching to?
Posted in Google, Yahoo, communication | 3 Comments »
October 26th, 2006
I have been trying with some frustration and some amusement to regain access to the account I setup with Yahoo! about 10 years ago. I say ‘about’ because I really can’t remember exactly when but I do know that it was early days, well before the boom (and eventual bust). What I do know is I am the only person using the handle ‘wioota’ and I am the only person with a grasp of the full details of my life. I cannot remember what password I used back then (hence the problem) and I am not even sure which of a myriad of work email addresses I may have used.
What I do know is that none of my current email addresses were used as the alternate address for this account.
With all that in mind you would think I could get in contact with Yahoo! and set a new alternate email address (which in turn would allow them to send me my password). What has ensued over the past year (my first response from Yahoo! on the matter was on January 16th) has been 3 separate attempts, each involving about 7-8 exchanges between Yahoo! and myself.
And still with no resolution.
Some of the highlights include:
- Yahoo!’s insistence that I supply both my Secret Question and my Secret Answer - I’d have found it a bit easier if they could supply me with the Question so I could respond with the Answer as I am sure that is how a challenge-response mechanism is supposed to work.
- Yahoo!’s later (much later) admission that my account is so old that it doesn’t have a Secret Question or Answer attached to it.
- Yahoo! then offering to let me add a Secret Question and Answer to my account for extra security and conveniance (no offer to help me identify myself and regain access to my account though).
- Yahoo! requesting me to fax or snail mail California (during an exchange where I thought I was in contact with local - Australian - representatives).
So to Yahoo! - a company who I have felt were being unfairly ignored in the face of Google’s impressive brand equity - you are driving your loyal customers away! I would suggest taking an axe to your customer support departments (which have clearly become bureaucratic and over-automated) and start investing there. This time don’t turn to your geeks for the answers, don’t offshore it, get someone or some enterprise who know’s customer service and let them take over.
You are doing a great disservice to the excellent efforts of your talented engineers by allowing your customer service to remain this bad for this long.
Posted in Yahoo, communication | 2 Comments »
October 14th, 2006
Robert Nyman wrote recently about the difficulty to get buy-in for accessible web pages. His article speaks to a greater issue however of the difficulty for organisations to address the detail of generating quality. I define quality to mean not only those aspects of a products finish that benefit an end-user but also those that benefit those that support and maintain a product.
The strategic decision makers often talk to short-term benefits as reasons
for taking short-cuts on quality. Sometimes I think the Google Offline Spider’s Archive maybe handy in settling once and for all how the short term thinking had lead to issues such as poor stickiness or excessive bug reports or that high exit rate from page x.
I have had various QA tester and QA Manager roles in my past (it was even my entry into my current company!). From this vantage point it often feels like the last thing anyone wants outside QA is a quality product.
Things aren’t generally that bad - of course once you experience different roles around the workplace you do realise that quality is being achieved despite conflicting incentives. I’ve done in-the-trenches development (I continue to moonlight with this every once in awhile to satisfy my hobby interest and to make sure I maintain a reasonable understanding of the work at hand), content direction and production, marketing and various managerial roles as well.
Developers and content producers generally are striving for quality in the face of deadlines, distractions and the conservative decisions of their managers (spending time on both sides of the fence I acknowledge that sometimes those decisions represent excellent risk management and othertimes fear/laziness of disturbing the status quo). Managers deal with distraction, the competing needs of other managers, the goals of the organisation and that estimating accurately is HARD.
In my post detail versus perspective I had discussed the trap of fiddling with details whilst the truly valuable contribution to the success of your organisation languished. This is not in conflict with achieving quality in your work as often quality (attention to detail, usability, accessibility, reusability, literate code - whatever it is that provides ongoing benefit inside and out of your ogranisation) is that truly valuable contribution.
So how do we all ensure we contribute to an overall environment of quality? There is no way to guarantee it but you can certainly do more than ‘your little bit’. To understand and facilitate others in their efforts to contribute to the quality of the product of your workplace is important. If QA request consideration to their workload and throughput then give it. In fact support any of your domain experts when they are suffering friction from decision makers when trying to address issues within their domain. And evangelize the aspects of quality that are key to your own domain succeeding.
Posted in Reinforcement, communication, complexity, web development | Comments Off
October 11th, 2006
Over time it is natural for any marketing department and development team/s to drift apart. I suspect it is often due to differing personality types amongst the decision makers - in development you often have ex-developers in management positions, in marketing you have a wide array of PR professionals and the more dangerous variety, marketing degree graduates ignoring everything they learnt in their marketing degree.
Many web developers have some marketing experience in their past - many web roles are about executing on marketing strategies - many more are multi-skilling producer/marketer/developer type roles (I’ve had experience in both).
Developers work well as marketers for certain tasks - particularly the measurable ones. Internet PR, SEO, SEM these are all tasks often undertaken by developers when there is no other implementers available. We also do some tasks terribly. Sometimes over-estimating clients and prospects. Sometimes under - we forget that they are not us.
A good marketer has been trained in all the tools and techniques to find out who the target market is. I often get frustrated when marketing lose sight of this and spend too much time engaged in PR activities (but maybe that will be the topic of a future post).
What is often overlooked is that the worst situation for a company is for communication breakdown between tech and marketing. Take the new site that one of the big 4 australian banks, ANZ, launched - designmycard.com.au. It went live with a TVC campaign - the purpose of which was to drive consumers to their website. The website is no doubt the hard work of some creative individuals as are the TVCs. The key point of connection is the URL. The ads use the more modern looking URL sans the www. So why the hell hasn’t anyone configured the webserver to resolve said domain??
As someone with a web development background I spotted the gaffe straight away and adjusted the URL I typed in the URL with the www added (after checking my internet connectivity and a host of other common issues that cause a site not to load…). But I can guarantee that the majority of people who saw the ads tonite and tried the URL did not. As Seth Godin says, ‘no one cares about you’ (that’s you ANZ).
The implementation fault is obviously on the technical side - its webserver configuration most likely. But the real fault is that a TVC campaign was launched directing people to a non-existant address. This sort of oversight I’d wager sits on the other side of the fence.
But the point of this post is not to gloat. I say wander down to your marketing manager’s pod or office and get reacquainted.
Posted in bug, communication, web development | 1 Comment »