IE7 breaks Virtual Server

Ah IE7, how I detest thee.
 
When I installed IE7 on WinXP SP2 my Virtual Server stopped working. Boy did it take me a long time to make the connection though. Every time I tried to log on to the Virtual Server it would correctly prompt me for authentication but it would always fail regardless of the level of use I chose. The error was that I failed to authenticate against an ACL. So I went to the root folder for Virtual Server and went to select the security permissions. However, on XP (unlike my more familiar Win2003) the security tab doesn’t exist. After following the help links I discovered that it does exists, you just have to switch it on. Although it wasn’t where it said it was in the help. The help says "Use simple security" is under Control Panel->Folder Options->View->Advanced. Whereas the last ‘Advanced’ button doesn’t exist, it’s just one of the options in the tree view. After turning the security tab on I then selected the security for the root folder->Advanced and forced all the child folder to inherit from the root. Job done. Although it took me about 30mins of turning the air well and truly blue before I figured all this out. Thanks again IE7.
 
PS, does anyone else have trouble getting the new tabs to respond to changes in the address bar? It just stays there looking all dumb…or looking like IE7 as I now like to think of it.
 

70-536

I was cleaning out the usual desk clutter the other day and found a voucher for a free Microsoft certification exam that was given to me from TechEd 2005! It was still in date, well it was going to expire at the end of the month, so I thought I’d book it for late January.
[Tues lunch time]
Prometric: "When do you want to book it for?"
Me: "Can I book it for late Jan?"
P: "let me see…you can have Thur or Fri?"
Me: "next week?"
P: "no this week, Fri is this last day you can book before the voucher expires"
<gulp> that givens me 2 lunch times and 3 evenings to cram like I’ve never crammed before!
So armed with my 1000 page Janet and John do Application Development book I managed to pass my exam, oh hurray for me. But all that aside 70-536 was quite a good exam to revise for and the official Microsoft study guide was pretty good. Some of the topics that usually have very chocked and dusty explanations were dealt with very well. Code Access Security (CAS) and Symmetric/Asymmetric encryption I thought were done very well, although as with all these revision guides they do only scratch the surface. A couple of things about security that I thought were really well put were;
  1. Using a domain to host a 3rd party component isn’t that you’re worried the 3rd party component is full of nasty code, it is that you’re not sure how well security audited it is and that some attacker may find a vulnerability in it. A nice way of thinking about the security risk.
  2. Seemingly risk-free resources can cause problems. E.g. The Event Log has never seemed liked a huge security risk to me, sure you could fire lots of messages for a Denial of Service, maybe clear a log to cover your tracks but, perhaps even read the log. But the one that was pointed out to me by the book I thought was very under-hand. You could shut an important service down and then pretend that all is well by logging fake log messages…clever.

I suppose I should think about doing another exam…then again I do have to wash my hair and then there’s the tiles to grout, must complete the Workflow demo, and the…

Pocket PC woes

It was too good to be true, now I’ve actually started to want to use it the Loox is proving to be a bit tricky. As with anything OS based is it Windows or is the device(s) at fault?
Issues:
1. Company (I’ll name and shame if they don’t respond soon) sold me a USB cable that doesn’t fit
[Edit] Oh the shame. The cable has the "up" printed on the wrong side, so turn the connector over and it works a treat <doh>.
2. Windows 2003 ActiveSync refuses to find the PDA, even though it connects at a network level. I can ping it and everything.
[Edit] Well Fujitsu support contacted me today. Hmm, literally was re-boot the PDA if that doesn’t work send it back for tests. Great…really tried everything there then, not impressed.
3. Windows XP finds the device via USB but I can’t get ActiveSync to work via Bluetooth. The PDA see’s the desktop but doesn’t see anything other than a serial service. The desktop can see the PDA and establish a relationship but no ActiveSync, and I can’t offer any other services.
I have to be honest, the whole Bluetooth configuration is a bizare mix of security and in/out ports. So I’ve really no idea how it should be set up.
So I’ll have to make do with VPN’ing into work from my XP box to synchronise my Pocket PC via USB, madness.
[Edit] No need now, I’ve got Exchange sync’ working now

Software Patterns shock, some people don’t like them!

I’ve often felt like the sour faced developer for not loving Patterns. It’s not that I can’t see their use, labeling a mechanism or concept so everyone talks the same language is a good thing. However, I’ve always felt uncomfortable about the proliferation of patterns, seems like there is someone wanting to gain fame by naming some blindingly obvious concept. But this has always seemed such a feeble argument against patterns (and it probably is). Today I finally discovered a rather obvious reason why the majority of patterns may well be a waste of time. One of the basic idea of a designing using patterns is to locate a pattern and use  it as a template to writing some code. Indeed you can find ‘pattern explorers’ in many development tools encouraging the developer to select patterns to solve problems and indeed for one pattern to lead to another. The major problem for this use of patterns is that it encourages developers to develop many components using the same pattern, just the sort of maintenance headache we strive to avoid. Whereas what should really happen is that we should consider the pattern as an abstraction of the problem. When you get into that mindset then you’ll see that the abstraction itself is a potential object and therefore should be implemented. That way you’ll end up with the one object containing implementing the ‘pattern’ and others using or deriving from it.

To read more sober arguments for and against, see good old wikipedia

Architect or fashionable label

I realise this isn’t a new rant but I need to vent. After coming back from Tech-Ed and listening to a few people talk about an architecture competition run there and how poor the competitors were. It seems to me that developers like to call themselves Architects where really they’ve simply designed a solution to a problem. Let me take an example from the world of building. If you need a house built then you know this is a serious project and you’d employ an architect to create all the plans, consider all the structural requirements, fire proof materials, thermal qualities, etc, etc. I.e. lots of complicated and big serious decisions. Whereas when you want decorate a room you’d probably do it yourself because it doesn’t really matter if you get it wrong, i.e. you can design the room within the constraints given to you by the original architect. In a similar way when I think about software architecture I think about systems talking to each other, or maybe down to the overall way a set of application services work together to provide a full application. What I don’t consider as architectural is producing a design for a small feature. For example, I might consider that architecting Visual Studio Team System would consider how to create something that allows various types of professionals to work on a projects and how all the various tools should work together. However I would consider something like the Server Explorer as a problem that needs a software design.

So before you go spouting on about what a wonderful architect you are, consider this, did you just put some new wallpaper up or did you really build a new house?

Tech-Ed Developers Conference, Barcelona

Tech-Ed

Just got back from Tech-Ed so I thought I’d blog about the overall experience and then some of the sessions I attended.

The Venue

The Centre Convencions Internacional (CCIB) was a good venue for the conference. Although, like a number of these places, it’s not in the nicest part of town. However, inside the facilities were good, and the general layout was easy enough to navigate around. If I had a complaint, then it would be more to do with the session scheduling than the venue itself. The rooms were of differing sizes depends, I’d assume, on the predicted take-up of the session. The problem here was two-fold; 1. How they predicted the attendance, 2. The use of small rooms. The prediction of the attendance seemed to rely on the pre-conference questionnaire but this was flawed. Attendees were asked to say which session they’d attend per time slot. But in most cases I had 1-3 session I’d attend, and it would depend upon my mood at the time which I’d actually attend, but there was no-way to convey that.   The second problem was the when a medium size room was free, the smaller sessions should have gone into them, instead they were left empty whilst the smaller session became full, very frustrating.

The Exhibition Hall

Nicely laid out with many of the usual suspects. Also included a (very grubby) X-Box zone, Speaker Idol and book store. The Communications area was just about the right size and the Ask-The-Experts was large although full of minority applications with not enough emphasis on the core areas.

I have to say that I think the Exhibition hall is a bit of waste of time, but hey its a way to load up your bags with junk that you’ll transport hundreds of miles to dump in bins throughout the EMEA region.

The big disappointment was the book store. It seemed to me that it was the books they were desperate to get rid of rather than those to support the conference.

The Sessions

Key Note – Windows Vista, the 2007 Office System and AJAX

Hmm, this started poorly and went into the world of the bizarre when a little girl from Pakistan was paraded in front of the conference because she’s passed some MCP exams. Although that should be applauded I can’t help but think that given her 101 demo of a calculator this speaks volumes about MCP exams and little about, "inspirational" stories. Still she seemed a nice girl but I hope she enjoys her childhood, she’s got the brains to do this computer thing for the rest of her life.

Then the marketing kicked in.  A nice demo of the presentation services and AJAX but unless you’ve been living in a cave for the last couple of years there was nothing new to see, I felt pretty disappointed.  The most cringey part was the, ‘pauses-for-applause’ that was greeted with silence. I’m not sure if this was the usual European sanity vs. American over-enthusiasm or the that everyone was just as underwhelmed as me.  
Overall 3/10

SQL304 Upgrade Benefits of SQL 2005 for Developers

Didn’t survive this session. I was hoping for some real ammunition to move to 2005 but basically got a list of the new features.
4/10

DEV351 ASP.NET Developer and Designer AJAX Bliss with Visual Studio and Expression

Didn’t survive this session. After 30mins of watching a demonstration of how to change properties of a element in an IDE, I walked.
1/10

ARC305 Connected Systems – Communication, Flow, Rules and Logic

Hurray, a full session. Interesting enough talk showing the thinking behind the WinFx changes. Inspired me to consider changing some parts of the application I work on.
7/10

OFF301 Windows Sharepoint Services v3: Using Feature and Solution Definitions…

A bit long winded and disjointed. Groups of ‘theory’ and code but not used a such a way as to explain each other, not really  helped by the constant audio bombardment of Todd Bleeker.  Still got a few ideas but was worried about the overly complicated and immature nature of customizing Sharepoint.
5/10

OFF309 .NET Development on Sharepoint Technology

The previous Sharepoint session had piqued my interest in learning more about. This session was much better, although I didn’t learn a great deal that I have not already read or seen, it was a much better session.
7/10

 OFF002 DEMO Building Collaborative Solutions with Sharepoint Services..

Quite a nice demo, I think attending this would have provided a decent overview of Sharepoint. It should some very touches, I especially liked the ability to derive a new field type – although the demo was a but flaky in parts. Another session that inspired me to make changes to our application, but also outlined areas where our application shines.
7/10

DEV348 Extending .NET with Custom Providers

Great session, even though I’d read a bit about the providers I’ve never had the chance to really use them. Jeff Prosise did a great job of showing how to use them, and also pointed out the typical pitfalls. This is what Tech-Ed should be about, not simply regurgitating on-line book material but actually sharing experiences. Although it was tempered by some absolutely dumb questions from the audience – I felt for Jeff here, how he resisted just telling the guy to get out I don’t know.
After the session I asked Jeff a question (of course not a dumb question 😉 ) about site maps per user and I thought the answer was at best weak, but then I’d guessed they’d be no answer to it, but then why not just say that?
9/10

DEVWD34 Applications for Windows Sideshow

Serendipity played a big part here. I wanted to attend an AJAX whiteboard session (had some gripes about the Microsoft implementation) but managed to go into the wrong room with three people in it. I thought it was strange to have so few people in a popular topic but without and slide showing me the name I was none-the-wiser. Eventually lots of strange digital devices were brought out, very odd. Then the title was announced and I felt too embarrassed for the speaker to leave him with just three people so I decided to hear him out. It was very interesting and I think it would be useful for practical applications. So I’m hoping to do some demos of this soon. I thought the speaker could have been a little more enthusiastic but again, learning about something brand new is inspiring and what I attend Tech-Ed for.
7/10

SQLWD02 – The Doctor is in: Tell us what hurts in SQL 2005

Good chance to talk to some SQL experts. The only problem was that I (and a few others) wanted to talk about specific issues  whereas I got the feeling that they wanted to know about things that weren’t potential bugs but more about things that were slightly annoying. Anyway got a few things off my chest, although I think some of the advice was downright strange, but hey they’re the experts.
6/10

DEV411 AJAX Patterns with the Microsoft AJAX Library

A decent enough session. For the first time a session that actually pointed out some of the bad bits of the AJAX libriaries (something I’ve been banging on about for a while).  Again the stuff you’d hope to hear. However, again, the session had fallen foul of internet, I knew pretty much all of it already. So although it was a good session I didn’t get much from it.
7/10

DEV319 Visual Studio 2005 – Advanced Data Access Techniques

Although there were some interesting points from this, I liked the way you could say that a field was a detail in a master/detail from the UI, the presentation was pretty dull. I left this one early.
3/10

Summary

Why do I go to Tech-Ed? I would say for the following reasons;

  1. Learn about new things
  2. Talk to the Experts rather than the forums
  3. Have some time to learn and think without the pressures of day-to-day work
  4. Be inspired

One of the biggest problems for me was that the internet is now a mine of information about new products. For example, I’d already watched a number of presentations from the PDC on the web and frankly the depth of those sessions blew anything Tech-Ed had to offer out of the water.
Talking to the Experts was good, but I found them to be very defensive, what I’d prefer is some decent open conversions rather than experts clamming up and toeing the company line. I understand why but it’s still annoying.

But having said all that, I do feel inspired in a number of areas, although I’ll have to say that I wonder what would happen if I just took myself off to a nice hotel for a week with a laptop and an internet connection. Would I learn more and be more inspired?

 

Adobe Photoshop Seminar Tour (London)

Just got back from attending the Photoshop Seminar Tour by Bert Monroy . I’m not a big Photoshop user but I found the seminar interesting. The topics included;
  • Layers – Beyond the obvious. Nice talk about how to use layers to modularise your work
  • Channel: More Than What Meets the Eye. A great talk, especially about what information is contained within a channel and how to utilise them for masks
  • Master Class: Brush & Pen Techniques. Although good, I found this least interesting. Some nice features such as the random drawing of a brush, but there was little here to interest me
  • Pen Tools & Filters. Some nice little tricks in here, I especially liked the use of filters on masks to produce a rusted metal effect
  • Filter Magic: Creating Realism from Scratch. A small show case of what can be achieved through Photoshop.

Overall it was well worth attending, although I was almost reduced to hysterical laughter by the people in the audience (mostly artists and photographers) who kept repeated what was just said. The poor lecturer must have thought nobody was listening.

@Media 2006

Originally posted 18 June 11:27 – I recently attended a conference for web design and related subjects call @Media 2006. I thought I’d give a brief summary of the sessions I attended and then my overall thoughts.

Day 1

Keynote Presentation

– Eric Meyer

Fun look back on the evolution of CSS and the varying support in today’s browsers. Nice little pep-talk before the rest of the conference.

Using DOM Scripting to the plug the holes in CSS

– Jeremy Keith

Hmm, not so sure about this one, just who was this one aimed at? I liked the way DOM methods, such as getElementById, were compared to CSS but then it quickly went down hill. The first couple of examples were mechanisms to insert code into a source document that would be repetitive (and perhaps ugly) to do by hand. E.g. the "zebra effect" where every other row in a table is a different colour. What struck me about these examples is that you’d be much better off to do this on your actual source, using a macro or pre-publish script, rather than relying on the javascript support of the client.

The other point that puzzled me was that he kept making the point that the code he wrote wouldn’t be the code you’d use since his knowledge of Regular Expressions wasn’t up to it. I could understand that you wouldn’t want to pollute example code with RegEx’ but I’d hope you’d show at least one example of how to do it correctly. He then mentioned a couple of points about controlling document size by looking at the browser and some 101 tips about detecting the browser support.

The most interesting point he made was that Dean Edwards has a page of scripts to make IE 6 act more like IE 7.

Rating, 4/10 and don’t bother with the "humour" next time

Fine Typography on the Web

– Dave Shea

Probably best known for starting up Zen Garden I was keen to see his view of typography. Very odd session. Talked about the fonts he liked and disliked making some very odd statement about fonts been boring because they’re overused. Talked about fairly obvious (you’d hope) points about the sort of fonts that users (i.e. Windows and Mac) would likely to have on their machines. Talked vaguely about why fonts like Verdana don’t always work – what about the fact that they are screen fonts, perhaps that’s why they don’t print well! Now for the interesting stuff, how to ensure the user has the font you want to use…basically you can’t. A few technologies were mentioned but basically they’re all rubbish. So you’re stuck with using the most standard fonts because you’ve got no real choice.

Rating, 4/10 – "yes we all know Comic Sans isn’t great if we didn’t we wouldn’t be here" – anon attendee

New Accessibility Guidelines WCAG 2.0

– Andy Clarke, Patrick Lauke, Gez Lemon, and Ian Lloyd

I admit I’ve not read any of WCAG 2.0 but I think I know the basics of accessibility. The discussion was interesting because it showed that the guidelines were just to odd to simply take and use without a second thought. What I took away from this was, be practical and do you best not to alienate a visitor but rather than attempt to implement every guideline. Then if you have a particular target audience then ensure their guidelines are met.

Rating, 7/10 – the panel seemed at odds over some points and re-enforced my belief that guidelines are too weak to adhere to.

Designing the next generation of Web apps

– Jeffrey Veen

I nice motivational speech about web applications, although I couldn’t help thinking that bulk of the audience are here for web design, rather than web applications, but a nice keynote style session.

Day 2

Bulletproof Web Design

– Dan Cederholm

A decent enough talk about the basics of good web design, but again, if you didn’t know this already what are you doing here? A few people asked questions about the age old problems of how to structure your page one way but present it in a different order. Although the answer was correct, it wasn’t anything new.

Rating, 6/10 – good but basic

Beyond a Code Audit

– Robin Christopherson

The first think to say about this session was that the venue mucked this one up. No network for the presenter, bits of stage falling down oh what a mess. However, the talk itself was excellent and really well presented. I must admit I’d never considered the problem of dyslexia and fully-justified text…although fully justified text on the web is a sin so I’ve never done it.

Rating, 9/10

Internationisation: Awakening the sleeping giant

– Molly E. Holzshlag

Lots of enthusiasm from the speaker with a very…American, style that’s not to everyone’s taste, I didn’t mind it though. However, although she made a few interesting points (First impressions are very important, Internationalisation is a form of accessibility) the basic result was that you need to employ skilled people in your target locale to correctly design the site. Is that really news to anyone? Ok so I live in Britain and the majority of the sites I’ve had a hand in are English only and if I lived in Brazil or South America perhaps I’d feel different but I didn’t really learn anything new here.

Rating, 6/10

Yahoo! vs. Yahoo!

– Nate Koechley

An interesting look at a few Yahoo! applications. Again, all about applications rather than web design per se but it was interesting and had some real world points to make. Sometimes what he said seemed contradictory (as picked up by some of the questions) but it did reaffirm my feelings about web 2.0 style applications and coming from such as big company that was good to know.

Rating, 8/10

Microformats: Evolving the Web

– Tantek Celik

On the face of it this is a weird subject. Microformats look useful and I dare say a number of them will be common place soon but I’m not overly sure much of the audience really cares about creating them…but I could be wrong. I know I’ll have a go at using some of the most common ones though so I guess it served its purpose. I can’t create this on this blog since it removed my attributes <grrr>.

Rating, 8/10

Overall Impression

A quick note about the facilities…poor. Registration was chaos itself, the lunch was very poor, and there were no refreshments between sessions…not even a drink a water.

I think the problem with @Media is that it fails to explain who the sessions are aimed at. I kept thinking, "if you didn’t know that, then you wouldn’t call yourself a web designer therefore what are you doing here?". But then what is a "Web Designer"? What experience do you need to have to attend a session? I come from a coding background with little typography or layout experience so the Web 2.0 applications stuff is interesting to me, but it’s really the non-coding stuff that I want to see. Whereas I’m sure the opposite is probably true of the artistic web designer that wants to know how better to render their designs for the web with all this strange javascript code. So while I got the odd nugget of information very rarely did I feel that I was actually learning something. However, what I did feel reassured about was that not even the experts really knew the answers to the problems that most people face, so at least I know that I’m not alone or missing some obvious "fix" to the problems I see. So would I recommend going next year? If they explain who their intended audience was then I would recommend it, otherwise I think you’d be better off using the web to look for the resources…with the possible exception of Robin Christopherson who’s session really does need to be "seen" (the obvious irony is that he’s blind) to get the full impact.

Comparing ATLAS with YUI

I recently attended a introduction to the Microsoft AJAX libraries (‘Developing Compelling Sites and Applications’), formally known as ATLAS, and thought I’d compare that with some of the work I’ve done with the Yahoo User Interface (YUI) libraries.
 
At first you’d be forgiven for thinking that ATLAS is all about asyn’ communications between a browser client and the server. Of course you’d be correct, but it’s not all about that. As with many technologies its primary aims quickly gets lost in time. One of the reasons technologies such as AJAX came about it give the user a better, dare I say desktop, experience. One of the obvious problems with that is how to update a web page with new details from the server. This is where the popular view of ATLAS comes in, focusing on how the client/server communications work. However, the often overlooked part is how to do I change the client presentation given all the different sorts of browsers out there? To use ATLAS terminology this is known as the client lilbraries. Both YUI and ATLAS share this ground and this is the area I’m going to quickly review.
 

Object or UI Orientated?

Both libraries have implemented their own…style…for providing a more OO feel to the JavaScript code and to introduce some extra programming techniques, e.g. Namespaces. However, I believe that ATLAS goes quite a lot further. It allows you to register classes (including base classes), interfaces, enums etc. Although YUI has some of these features it feels very much more like YUI includes them to support the UI whereas ATLAS has included them to produce OO like code that happens to be used in the UI. A subtle but important difference, although if I can get the UI working without worrying about the code perhaps the Yahoo! way is better? If you’re a .net programmer now I’m sure you’d feel at home with the ATLAS client…code extensions(?).

UI Features

Both libraries have a very similar set of features but I’d say the YUI is more mature than the beta ATLAS counterparts. The YUI components just seem to work as you’d want. When I launch a panel in the YUI I get the full dialog experience with options for title bars, modal dialog, move controls, etc. Whereas for ATLAS I seem to get a square that I can move, but I’ve got to add the mouse pointer, the title, etc, etc. Another example is the Auto-complete edit box. The YUI and ATLAS variants do pretty much the same job, however the YUI includes a "selected" event, whereas I seem to have to code that myself for ATLAS. This means that I can quickly produce pretty slick UIs with YUI that do 90% of what I want. However, here’s the bind. When the YUI component doesn’t work as intended it takes quite a bit of fishing around to understand how the component works to sucessfully alter its behaviour. Whereas with ATLAS you learn that up-front and changes are easier because it works as you programmed it to. Ok, that’s a bit unfair, with the ATLAS control kit you can pretty easily wrap core features to become something more like what you need out of the box. However, I still come back to thinking that the YUI did almost everything I wanted without any need to customise it.

Summary

With my short time spent using both sets of libraries I’d have to say I’d probably invest my time in ATLAS. Mainly because it seems like the logical path to take when developing Microsoft based solutions, especially when you take into account ATLAS’ XAML like script, surely the tools will eventually all come together. However, at this very moment in time I would say that YUI wins hands down for its easy of use and feature set. I thought I’d struggled to get around animation bugs in the YUI, well I’d not seen the ATLAS implementation!

I’m sure over time both libraries will improve and it will probably just come down to the sort of coding you need to do. If you’re a Microsoft shop I’m sure ATLAS or Microsoft AJAX Client/Server/Control libaries will be for you.

 

YUI – Yahoo! User Interface Library

YUI – Yahoo! User Interface Library

One of the few interesting sessions in this years @Media 2006 event was on how Yahoo! were writting a core User Interface library called YUI. The library is free to download and the site contains some interesting demo’s. It just so happens that I’m writting a very quick staff database to allow people to put a picture to a face at work. So I set about using YUI…
 

What is YUI?

YUI is a set of javascript files containing useful UI code that are downloaded to the client in the normal "script src" fashion. The libraries build on themselves to provide ever richer UI tools.

The type of tools on offer include;

  • Event registrations
  • Dom support
  • Drag n’ Drop
  • Calendar
  • Menu
  • TreeView
  • AutoComplete

My favourite is the Container that provides a very simple mechanism to include your own dialogs on a page, including psuedo modal windows.

My Staff Database

The project I wrote using YUI was essentially a very simple contact list with the following basic structure;

[Edit Box] [Find Button]

[Name of person] n [Contact details]n  [Photo]n

[Name of person] n+1 [Contact details]n+1  [Photo]n+1

etc

The Edit Box for searching for a persons name is implemented as an AutoComplete control, so as you type in the persons name it displays a list of ever more specific matches. When you find a match, you click the Find Button and the page is scrolled to the person in question and their name is animated to draw the users attention. The user can then see the thumbnail image of the person and can click on the image to see a larger picture. This invokes a photo-box dialog that displays the picture in a modal dialog without the user having to leave the main page.

 

Any problems using YUI?

YUI isn’t without its problems.

Documentation

When I started using YUI it was in a beta form so the help was a bit sparse and even though it has been improved I still needed to fish around inside the implementation libraries to understand what I needed to do.

Style

I’m sure Javascript must hold some kind of record for the number of ways to define a function block and I’m equally sure people will argue for weeks about which style is best to use. However, what I would expect from library code (of which I include the example code) is a consistant style. I’d just got used to one style in the ‘Module’ code to be faced with a different one for ‘AutoComplete’. Ok it’s a minor thing but it’s pretty irritating, if not tricky, to read a block of code with different coding styles within it.

Stylesheets and Javascript

Obviously a Javascript library needs Javascript to work, but it does need to placed into the ‘problem’ section since there are server side alternatives to many of the YUI features. I chose to degrade gracefully when there is no javascript by defaulting to a fairly standard HTML version of my page and getting Javascript to add complexity, that way if there is no Javascript then you only get the basic feature set. The slightly trickier problem is the use of Cascading Style-Sheets (CSS). For me, one of the great goals of CSS is that it should degrade gracefully. YUI relies on CSS to provide many of its features, some degrade more gracefully than others. For example, the auto-complete list is a hidden list, turn off stylesheet support and the list is created underneath the edit box. Ok it’s ugly but functionally it works fine. However the containers don’t really work. In my example the photo-box simply stays at the bottom of the screen and is pretty useless. More annoying is the use of colour. I wanted to write a colour fade (or animation) but this required me supplying the colours I wanted to use. Now I can’t really do this since the user (or other developer) maybe using a stylesheet that I’m not expecting. YUI provides some support for detecting the style of an element but this didn’t work as expected. When I asked for the background colour of a specific element it failed to properly traverse the CSS hierarchy and only provided the correct answer when the element was specifically configured in the stylesheet. That led me onto another annoying problem, my workaround was then to use an opacity fade but that kept doing odd things to the font. Eventually I discovered that you must ensure the text in an opacity fade has a background colour.

The other major problem with the CSS use is how accessable the page is. In my example I had to add extra buttons and events to cope with the keyboard user. Reading between the lines it looks like the YUI is doing more in this area but currently I feel you have to add too much of this code yourself.

Extending the YUI

Apart from the coding style issues I found extending the YUI relatively easy. The main problem is due to its main advantage, the coupling of the modules hides the complexity of the lower-level libraries but it can also means that you can break the code without really knowing why. In my example I have pictures of different sizes to display within my photo-box, so I extended the module to allow me to specificy the dimensions of the image. This worked fine for a while but suddenly the box refused to be moved by the user and would just stutter. Also if I created a dialog larger than the viewport it started to behave erratically. I’m still not sure what caused this, perhaps beta code, but after a re-write for the latest version it seems to work.

Summary

I think the YUI is well worth a look but I do get the feeling that the majority of the features are built for users with a monitor and a mouse. Then again there is nothing stopping you extending the library to better cope with other devices. So even though it isn’t perfect I’m certainly considering using it in future projects.