In creating animation, people (including clients) don't always consider the refresh rates of these assets. Not only can animated banners and the like be quite unattractive and annoying, they can also be quite unsafe for some users, particularly htose who are photosensitivity epileptic.
In determining whether a particular asset was in violation of guidelines, we found the site below, which analyses an animated GIF for it's photosensitivity risk.
http://tools.webaccessibile.org/test/check.aspx
What is suprising is the WCAG guidelines specified even 4 refreshes a second can be dangerous.
Well worth checking the next time you prepare a spanky new banner.
So today I have been working on my first production Silverlight application, if that is what you would call it. It will be used as a simple promotional device on the Isle of Man TT site, promoting the TT Live! service for 2008. You can see the page in action at:
http://www.iomtt.com/TT-Live.aspx
(Note: this page will only be active until 6th June 2008, which is the end of the TT period.)
For the benefit of Googlers, I've prepared some lessons learnt and observations made.
Images
Images within the Silverlight control can only be JPEG or PNG format, otherwise you get a AG_E_NOT_FOUND error. Found this out only within the Silverlight Forums. Could have pointed that out on the videos, guys!
Timing within KeyFrames
When working with KeyFrames, the KeyTime is relative to the parent Animation. For example:
<DoubleAnimationUsingKeyFrames BeginTime="00:00:15" Storyboard.TargetName="Frame4WebCams" Storyboard.TargetProperty="(UIElement.Opacity)">
<SplineDoubleKeyFrame KeyTime="00:00:00" Value="0"/>
<SplineDoubleKeyFrame KeyTime="00:00:00.5000000" Value="1"/>
<SplineDoubleKeyFrame KeyTime="00:00:05" Value="1"/>
<SplineDoubleKeyFrame KeyTime="00:00:05.2000000" Value="0"/>
</DoubleAnimationUsingKeyFrames>
JavaScript integration is ace!
I normally despise JavaScript, partly because there are so many pages out there on the web with JavaScript errors it is disheartening to want to inflict more bugs and unreliable scripts onto users.
I do like the way that functionality has been split out into the JavaScript element. This is in contrast to Flash, which uses a single file for both presentation and functionality. This split of functionality means that the host web page and server can interact with the control in a more logical fashion - particularly if you're a .NET developer. It also helps me improve my JavaScript!
One way I used JavaScript was to create a Replay button at the end of my little presentation.
I have a canvas for my Replay button:
<Canvas x:Name="BuyButton" Canvas.Top="145" Canvas.Left="259" Canvas.ZIndex="50"
MouseLeftButtonDown="onMouseClick">
Which calls my event handler in BLOCKED SCRIPT
function Replay_onMouseClick(sender, mouseEventArgs)
{
this.storyBoard=sender.findName("Frame1Storyboard");
this.storyBoard.begin();
}
But what I found super sexy is that I can find the storyboard that is in charge of my animation from the sender object, and just tell it to start. I found this thanks to the new JavaScript debugging in Visual Studio 2008, by the way. Not through the inspection tools, but by banging in random command lines in the Immediate window. I got lucky.
Development Experience
There is a lot of work Microsoft need to do to make the development experience more intuitive and cohesive. For instance, I have Visual Studio 2005, 2008 and Expression Studio February 2008 Beta. My VS 2005 supports Silverlight - to a point. My VS 2008 for some reason doesn't. My Expression February 2008 Beta works much better than previous versions. Overall, I end up being quite confused about what should be done where.
I'm also trying to learn the Expression product suite and bringing what I know from Flash I think I am getting to grips with it. I cannot see any of our designers using their tools, though, as I think Microsoft would wish. From what I can tell from their marketing, they are hoping for designers to generate the UI or visual components in Expression/XAML and pass the solution/projects on to the developers. These files can then be sent back and forth between departments as needed. I am not convinced this will work, however. Quite apart from anything, don't designers live in the Mac camp, beyond the ocean? ("There be dragons there")
Also, whilst the XAML produced by hand and by the tools is clean enough and well-structured, it is obviously structured according to the requirements of the presentation, rather than semantically. For example, I would have liked to highlight which TextBlocks related to headings, either by a Heading1TextBlock (being equivalent to an H1 tag) or by attribute, eg. <TextBlock HeadingLevel="1" />. This more open manner of managing content encapsulated within a Silverlight control or component does allow search engines access for indexing (unlike Flash), but doesn't give them the full semantic experience that is so important in effective indexing of content.
I must say the QuickStart videos at www.silverlight.net were essential and very useful in getting this far. If only my shouting at the presenters would have given me the answers I needed.
Don't think you can modify your XAML in Expression Blend and F5 to refresh your browser output. Doesn't work, resulting in repeated Ctrl+Refreshes to clear caches, etc. Took me a while to figure that out, too. (Visual Studio 'locks' the file, even when in "pause" mode). You do have to recompile each time.
I have found the optimal experience is having the following open and switching between the three:
- Microsoft Expression Blend - for the visual development of the XAML elements
- Microsoft Visual Studio 2008 (editing using the XAML editor, though I don't get a preview) - for the down and dirty XML tweaking and JavaScript hacking
- Adobe PhotoShop - for the graphics
One more thing; why does Expression Blend open Microsoft Word for an HTML editor by default? When will Microsoft dump their insistence that people want to develop web pages in Word, and generating the crap output that it generates? I would think any developer worth his salt would jump around in frustration if a designer modified something in the HTML editor in MS Word, wrecking their beautiful XHTML mark-up! (Okay, maybe not that beautiful).
I have just completed revisiting the checkout portion of the various e-Commerce sites I help manage. The reason for the revisit was to establish ways to improve the conversion rate of users that enter the checkout and complete the checkout to make the purchase.
Part of the testing process has highlighted some interesting points about e-Commerce checkouts and forms in general. I'll share them with you, here.
Make sure the Enter key targets the appropriate button on submission
Users can find it difficult making the transition between conventional desktop use, where Enter keys and mouse actions perform certain actions, and web use where Enter keys don't follow such stringent rules as windows and dialogue boxes and double-clicks aren't useful. (Even though users double-click on web pages an awful lot.)
One aspect of this is users' habit (and perhaps rightly so) of pressing "Enter" after finishing a particular section of a form. For example, when logging in to a site, typing:
<username>TAB<password>ENTER
to enter the requested details and actioning the request. Of course, on the web, thing's aren't so straight forward as a Windows dialogue box. This is particularly a problem for .NET sites, thanks to the way that ASP.NET renders it's pages, but a fix is available in ASP.NET 2.0. I have used the new DefaultButton attribute to achieve this:
<asp:Panel ID="pnlForceEnterKeyToLogin" runat="server" DefaultButton="btnLogin">
<fieldset>
<legend class="hidden">Login</legend>
<asp:PlaceHolder ID="plhExistingUserValidation" runat="server"></asp:PlaceHolder>
<p>
<asp:Label ID="lblExistingEmailAddress" runat="server" AssociatedControlID="txtExistingEmailAddress">Email Address:</asp:Label>
<asp:TextBox ID="txtExistingEmailAddress" runat="server" />
</p>
<p>
<asp:Label ID="lblExistingPassword" runat="server" AssociatedControlID="txtExistingPassword">Password:</asp:Label>
<asp:TextBox ID="txtExistingPassword" runat="server" TextMode="Password" />
</p>
<p>
<asp:Button ID="btnLogin" CssClass="button" runat="server" Text="Continue >" />
</p>
</fieldset>
</asp:Panel>
You'll also notice that I have used the '>' character to convey movement to the next screen. I'll probably replace this with an image shortly, but the point remains the same, small visual cues like this say more than you think.
Check page-flow is useful to the user
Make sure that page-flow from adding an item to the user's basket and putting the item in the basket is logical and obvious. There are three options, each with it's own considerations:
- Recycle the same page - Users can add items to their basket very quickly and not "lose" position in the site. This is particularly useful for pages with multiple items for purchase. However, make it obvious something has happened. Previously, I have emboldened the last item added to the basket, but a distinctive message would also suffice.
- Jump into the checkout - Once "Buy" is clicked, sending the users straight in to the checkout certainly emphises the process of purchasing, but then forces users who want to continue shopping to then come back out of the checkout to continue purchasing. It also gives a slightly forceful impression, which may reduce the number of units bought per purchase.
- Jump to a page full of other products - This is probably the most widely adopted method for companies who are more on the ball with their e-Commerce offerings. Once a product has been purchased, even basic cross sell logic could generate a series of products which may also interest the user either as a complement or otherwise to their purchase. Amazon.com do this, as do Marks and Spencer. However, again, make it clear that the user has added the item to their basket.
When errors occur, make it bloody obvious!
For complex pages, validation can be a pain in the @rs3! Where do you put the validation errors? Do you out them at the top of the page, or alongside the individual controls? I choose to put them at the top of the <FIELDSET> containing the controls, for accessibility, but this means that if the user has a particularly full basket, they may not see the errors as they may "fall off" their immediately viewable screen, resulting in the impression the page hasn't done anything when they clicked the button.
I have reinforced the messages within the <FIELDSET> by a distinctive banner that is shown at the very top of the page that advises them to look further down the page for why the request didn't work out.
Usability testing
While a fully budgetted for focus-group is an ideal thing to have to help identify niggling issues in usability, throwing the checkout at random people in the office could also be a great way of spotting errors, niggles and spelling mistakes you would never spot yourself. It can also be used as a training exercise for the support staff, such as customer services teams.
And of course, accessibility goes without saying ... doesn't it?
Even now, four years or so after it became a "good idea" to make sites accessible, developers STILL generate HTML 4 with no regard to semantic or accessible content. The same rules still apply:
- Use FIELDSET's to separate sections of a form and label them with a <LEGEND>. You don't have to display the legend, hide it if it detracts from the design.
- Use XHTML+CSS to seperate your markup and content from your design. And while you're at it, how about making a print stylesheet by using media="print" on your <LINK> tag?
- Use AccessKeys on key parts of the form, such as submission or common fields such as email address. And make sure your TabIndex works correctly.
- I like to try and reduce the number of images in the "content flow" as much as possible, unless there is a particular relationship between the adjacent content. Therefore, "furniture" such as icons, decorative elements, etc. I put in CSS. That way, a user on a light-weight browser or slow connection does not have to wait for it all to download and render (assuming you are using CSS media types).
- Don't rely on JavaScript - and definitely not Flash!
- Make sure your text is of a large enough size as to be legible. Remember that about 60% of users who use the web have some degree of eye problems.
And while I'm here, this is a really neat way of hiding content from browsers, but not hiding from speech readers:
* hidden { position:absolute; left:0px; top:-500px; width:1px; height:1px; overflow:hidden; }
The problem being that it is often required to have content within your markup, but want to hide it for design purposes as elements such as <LEGEND>s, <CAPTION>s, etc. are often targetted to specific platforms and users. Hiding it with a display: none or visibility:hidden is no good, because speech readers (being one of the specific accessible platforms) have started to implement these rules. This method, however, moves it off the content layer, then either moves it out of the rendering viewport or makes it obscenely small so as to make is invisible and (hopefully) so small that if it was rendered it wouldn't affect your overall design.
There is the unfortunate news today that five Britons have been killed in a coach crash in Ecuador (BBC News). This is tragic news, particularly for those close to the victims. While watching the news on Channel 4 News this evening, I was shocked to see the girls' Facebook page to be used as a means of identifying one of the girls who was killed.
In the days of attacks on our privacy, either by legislation or incompetence by the government, and warnings about revealing information particularly on the internet, this surely was most irresponsible.

Note that in the screengrab from Channel 4 News this evening, I have removed some very risky information:
This grab was broadcast to the entire of the UK. Malicious individuals can use this information to cause further distress or commit fraud using these details. The BBC programme Newswatch recently covered the BBC using Facebook and MySpace pages to depict individuals in the news.
It just shows that it is even more important for users to hide thier profiles from everyone except their immediate friend network. The internet is full of personal potentially private information, including sites I have written myself, and restricting the access to information that could be regarded as being subject to fraud or misuse is even more paramount. While developing these sites, I took privacy very seriously and signed up to the appropriate legislation when required, but it seems users themselves need to take as much care as the site developers - and for news agencies not to blatently broadcast the information indiscriminately in the pursuit of a 5 second grab for a news package.
This is going to be about a local issue, but no less relavant to my on-going pontification about web best practice. I hope that you'll enjoy it, even if you don't enjoy living here on The Isle of Man, as I do!
The Isle of Man nestles in between Ireland and England, and is home to major finance institutions due to it's off-shore status. Therefore, it supports a burgeoning hi-tech business community, and web design and web services has a signficant contribution. A number of web sites have sprung up, some work well enough, many more are really bad. One of the stalwarts of the island is www.isleofman.com, which is a web-site aimed at many audiences on and off the island. It forms an excellent window onto the island for the visitor and tourist, and an even better portal for the resident who needs access to local news, weather, sport or information about the island's businesses. I have had the pleasure to have had a brief contribution to the site, although this was before the recent change in ownership.
Those who know me and who read this collection of hap-hazard thoughts will know that I have a distinct idea of what counts for a quality web-site. Key words for me are simple attractive design, accessible, usable and semantic.
Let's take a look at this new site:

http://www.isleofman.com/index.aspx
Very attractive, I'm sure you'll agree. As a showcase for the island, this page really looks the business .... until you look a bit closer and start to use it. The image caraousel in the middle of the screen is a Flash component, which while attractive, is actually quite difficult to use. For example, you move your mouse anywhere within the [invisible] borders of the control (including the white areas) and pictures start to fly left and right. A neat effect, but I wouldn't be expecting that if I was concentrating on clicking the useful links at the bottom of the page. Surely the images should only move when I am concentrating (and my mouse is too) on the images themselves?
Unvelievably, those lists at the bottom of the page are not lists, in the semantic sense. They are just links within tables. Such an easy opportunity missed to present semantic and accessible content to search engines and users. I could have forgiven the use of Flash on the home page if these were written semantically, ie. as a series of UL > LI's.
As you hover over the images, you wonder what is behind them, as there is no hint as to what each image is for. No text appears to give any hint. So, maybe I should click on one to find out:
Nope, still none the wiser. Those who know the island will know we have a famous association with motorsport, particularly due to the World Famous TT Road Races, which see some of the best riders race round the public roads of the island for two weeks in the year. So, you'd be forgiven for thinking that this has something to do with the TT races - well, you'd be wrong:

http://www.isleofman.com/Tourism.aspx
This is the Tourism home page. Eight attractive photographs are presented to you, which are randomly selected each page refresh - a nice touch. Looks really attractive and usable. I would then start clicking on images to see where they go, but they go nowhere. They are not links, though they feel like links into different areas of Tourism. You'll notice I caught an ALT tag on the screenshot above - which is the same ALT tag on every image. Sort of defeats the point of an ALT tag, really. So where can I go? My eyes are drawn down to the rich content of the images and I feel lost as to where the content actually is. It takes a few moments to remember there is navigation at the top of the screen to help me.
Another cheap opportunity to be semantic and accessible would be the breadcrumb. An essential navigation aid in any medium to large site, should be implemented as it is: it is a sequential list of pages who order is important. Sounds like it should be an ordered list (OL), but it isn't.
I'm not going to spend time being overly negative, but I think I have made my point. I am a bit of a purist at times, but I am also pragmatic when it comes to the difficulties of maintaining and improving large established sites. So afterwards, how do I feel about this new look?
Firstly, the site is very attractive. The designers responsible have done a very good job of revitalising a tired design, which although attractive, was less than stimulating. I really do want to explore this site to see more of it's rich colours and imagery. But, when I can't or when I feel like I am randomly being sent around the site with no hint as to what is behind each link (the home page carousel, in particular) I feel cheated and confused. Bizarrely, the carousel isn't even consistent in the lack of information. Fair enough, a sizeable chunk of those images link through to the Tourism section - but not all of them, your challenge, dear user, is to figure out which (the Manx Flag, Celtic Dancers and Louighton Sheep link to different content). This carousel really needs a text overlay on it - then it would be complete - albeit in Flash. (Have you considered Silverlight? My bet is that it will work well with your CMS as it is XML based!)
This site has always performed very well with search engines. It has a prestigious domain name (well, if you're an islander!) and is actually often mistaken for one of the Isle of Man Governments own sites as a result of this high-ranking position in search engines. (Do a Google for "Isle of Man" and it is this site not any of the government sites that hits the top spot) As I always say, your favourite user is also your most limited user. This user cannot see colour, nor can this user appreciate design. The user cannot even make any intelligent detemination as to the meaning of the text on your page. This user is Google, et al. This is one reason why accessibility is so important, not to mention the very real and relavant audience of users who do not have the capability of obtaining the same web experience as you or me. Whether blind, deaf, wearing glasses or difficulties with motor-skills, these users are just as important. So an accessible web site, using industry best practice is essential. Simple rules like avoiding tables when they are just being used to form layouts, recording correct and meaningful text alternatives to images AND links and using semantic mark-up are the basic building blocks on which to build a site. This site breaks all those rules.
Saying that, one big no-no in accessibility is opening new windows pointlessly. In viewing this site, I had the misfortune to have to sully my new laptop with Flash to have the home page work (I wouldn't bother usually, the site did work quite well without it, though it wasn't pretty) and the link to get the Flash player did not open in a new window as per accessibility guidelines. Hooray to that!
The site is a big site, and it was always going to be a difficult task to make the transition into a new design. I love the design, I love the Celtic emblems which are remninscent of the local artist Archibald Knox (and I have a sneaking suspicion who applied that mark everywhere on the site). A lot of care has gone in the little things, unfortunately, their effect is spoilt by the use of unintuitive, and uninformative navigation controls. There were a series of other bugs and spelling mistakes, but these are not important, to me. They'll get ironed out over time. While I am sad to see my own contribution to this site go (the old on-line shop software), I am pleased with it's revitalisation and wish it and the team the best of luck.
I previously wrote a blog over at Work Connexions* titled "Why Content Management is a con" (make sure you go to .com not .co.uk - Bizzarre splitting of branding, I know) that broke down, for me, the benefits of a Content Management System and highlighted the true costs associated with it's implementation. For example, while a CMS seems a "Plug-in" solution for a web site, it rarely is for the majority of web sites, particularly corporate sites that require specific functionality such as shopping baskets, support portals and true control over branding.
Over the past few months, in my free time, I have been looking at a variety of Content Management Systems, which vary from the free to the tens of thousands of pounds mark. Mainly as a basis for research, but also with a view to revamping my own site. My site has suffered over the last few years due to too much work of others! It's like they always say, the successful, quality painter/decorators tend to have the scruffiest houses - and the same is obviously true for web design and development! Putting some work back a little bit, I thought I would check out some for [hopefully] a quick installation on my own site.
I looked at 5 individual systems in my research, mainly .NET-based. First, though, let me outline my requirements, with a view to the objections I raised in my previous post on the subject.
-
I want a system that is modular - and I mean modular. I do not have the time to maintain my own site, but do have a need to upgrade it's functionality at will without affecting the whole. Therefore, I want the ability to drop DLL's, controls and pages into the site and not have to worry about affecting other elements of the site. .NET is great for this, if the application is written well enough. This allows me to maintain the guts of the site in a piece-meal fashion, thereby avoiding a "big bang" publish and minimising costs to me (which in my case, is time).
-
I want a system that is cheap. I am not averse to paying for software, indeed, in many cases I prefer it (see
How to solve a Problem like Open Source), but this is a small site and I have a limited budget - both in terms of hosting costs and purchase of software. I certainly want to avoid the expense outlined previously!
-
I want a system that is accessible and semantic. The quality of markup generated by automated systems such as Content Management Systems, Blogs, rich text editors, etc. is appalling. (
Semantic Web 2.0 content is hard to achieve) While I believe Web 2.0 is muddying the waters a bit with regards to quality and meaningful content, I do want Web 2.0 features such as user feedback, and an AJAX-y feel. I hate the Web 2.0 term, I've been craving Web 3.0 for a long while, now - that is when XML becomes sexy to everyone!
-
Finally, I want a system that is flexible. I want to be able to have absolute control over mark-up, and I want to have control over how the site is structured when detail is important. If it comes down to writing in XSL, so be it - I have yet to think of a better way.
All these requirements are based around quality of content and reduction of cost.
So what packages did I look at?
-
Kentico - a low cost solution that initially seemed quite impressive. Having downloaded a trial and organised an online walk through from the US, I was quite impressed about how it was structured and how I was being 'chaparoned' to making the purchase. Unfortunately, when the software failed to perform a simple task (I forget what it was, it literally was something like publishing an article) during the demonstration, I'd had enough.
-
Umbraco - a free, open source solution that - while completely functional - lacked the "pazaz" that I would have hoped for, the admin interface being very muted monochromatic colours making it difficult to differentiate the various sections of the screen and the purposes of controls. I played with it for a while, but was not pleased with the output of XHTML and open-source worries me.
-
WordPress - a fellow member of the Isle of Man BCS is well involved (
U-G-H GreyMatter) with WordPress and has helped in the installation of a number of sites (most recently, and impressively,
Strive PR's Strive Notes) so I was quite intrigued about this software. While it looks quite a strong package, it feels too blog-ish, which is not the look I want. Additionally, it requires PHP and while I have PHP capability, I don't have the skill and prefer the [superior] .NET platform (PHP fans - remember you are on a .NET blog site!).
-
SiteFinity - a Content Management System from the makers of radControls, which I have used at Work Connexions (and are still being used - hopefully not on my $999 license!) Obviously, this system is based around their radControls, which I am familiar with, but unfortunately, is also a weakness for me. The quality of XHTML output from rich text editors is poor when they rely on the rich text editors built in to the browsers (particularly Microsofts), and this shows in this package in the editor component and the surrounding navigation components. A beautiful drag-and-drop metaphor, however, which makes content management a breeze. Full marks for interface, shame about the output.
-
Sitecore Xpress - finally, there is Sitecore Xpress. Sitecore is an enterprise level CMS that I have a lot of experience with, so when this was released, it was a dead cert I would be pleased about it! And I was. Despite the very limiting license agreement, I thought I would give this a shot. Bearing in mind, it is the
same enterprise class software in most respects as the core
Sitecore product, this was fast to install on my development environment and I had full blogging services and a design written in TWO DAYS - from scratch. This is largely because of my experience on the platform, but also because the guts of Sitecore is all XML, so those who have a modicum of XSL can make the entire site run like a dream on snippets of XSL with excellent levels of flexibility. Unfortunately, while it is called "Xpress" and is a "personal license", it breaks down at that point. By "personal license", I expect to be able to install it on my personal hosting, which is not insignificant. WIth five databases, my preferred MS SQL database was out of the question as I only pay for one. Any further databases would cost me a lot of money. MySQL would have been slightly cheaper, but still not cost effective. So I had to settle with the SQL Lite, and despite all attempts at my excellent hosting provider, the system is just not viable on a shared platform. This, to me, is rather a trial for the "real" version.
So, after all this looking, I have come out with nothing. Although, I have learnt a lot about various Content Management Systems, what is important to users, developers and partners/resellers. Over the past couple of years I have been playing around with some techniques for generating dynamic content - such as HttpHandlers, etc. So I'm going to write my own. How hard can it be? With the WinFX technologies such as Communications Foundation and Workflow Foundation, it becomes even easier to create rich .NET applications that are truly enterprise level but cheap to develop.
Maybe if I have these requirements, other people will too, and that would drive down the "true" cost of Content Management. I intend to try. Work is well under way and I hope to have something to show for it soon.
If you're interested in following my work, please do comment and let me know. Any ideas, suggestions, reality checks, welcome.
* For those of you who read regularly, I am no longer involved with this site, a shame after all my hard work!
I've been interested in the semantic and accessible web for over five years, now, and the benefits I have developed on various web sites are clear to see. Semantic content is where web pages are 'marked-up' according to their structural significance, as opposed to their presentational significance. So, a heading is marked up as a heading, now a bit of text with bold and a larger font. The formatting of the heading is achieved using Cascading-Style-Sheets. Of course, I'm preaching to the converted I'm sure. Semantic content has key benefits not only for coding cleanliness, but also increases the accessibility of a page to disabled users, availability of the page to users of alternative platforms such as mobile phones and, most importantly, 'readability' by search engines.
Search Engine Optimisation is currently the sexy business of the web, and companies are making thousands of pounds from making out that they can understand how the major search engines aggregate content for users searches. How they can claim this, when much of the internal procedures and practices of the big search engines are hidden and closely guarded secrets, is quite unknown and I say to people who ask me that unless you have money to burn, it really isn't worth the investment. It is better to make sure you have a well structured, semantic and accessible web site from the outset than to waste money on a service which, ultimately, cannot be guaranteed.
In my experience of developing well structured, semantic sites, it can take a little longer to achieve "Page 1" or even "Top 5" search result status, but this is organic growth, which proves the quality of the content and therefore endorses the work and practices put behind the site development. Arrival at the prestigious position on the search result page in an organic manner can also help cement these development practices in business leaders' minds as being worth the extra effort or thought, as opposed to settling with randomly pushing the latest marketing drive or topic they feel users would or should be interested in. Thought at every point in the process of developing web content is essential.
Whatever "Web 2.0" actually means, some of it certainly involves user-generated content. User-generated content, despite what the seminars will badge as new "Web 2.0", is not a new development. Though the accessible, semantic web is relatively new. More and more sites are being re-developed to be platform portable and highly accessible, which is often an expensive project involving work from the ground up. As soon as you open up a site to user-generated content, however, you lose control of this high-quality of web content which makes the quality of your web-site markup so accessible and understandable to search engines, etc. Fair enough, comments to blogs are quite simple and are well aggregated by search engines. But this is because there is often very little control handed over to the user in adding their content.
In my experience of working with sites that involve user-generated content, it is very difficult to hand over the power of the web - including ability to format text, insert images and even obejcts such as Flash or video content - without compromising the quality of mark-up in a page. Two reasons are clear for this: the user is not aware (and should not need to be) of the need to structure their content in the correct and optimised manner and the tools available for this user-generated content are often poor.
A case in point is a major site I have recently been involved in. The site, based on the Isle of Man but clearly with a global reach allows users to post their own content in the form of advertisements, or requests for services along with ability to create their own profile. In order to implement this rich editing capability by users, I needed to be able to find a good editor that works like a word-processor, but creates very high quality mark-up for the web. Unfortunately, the options are very limited. Most rich-text editors for the web have the unfortunate reliance on the rich text controls within each browser. Therefore, when using a rich text editor on Internet Explorer, it exposes parts of the rich text functionality of the browser itself. As you can imagine, this doesn't work with XHTML, but a bizarre hybrid of XHTML+HTML+MS-HTML. This results in very poor markup. Paste your work from a word processor that claims to support web content, such as Microsoft Word, and you get even worse content. (Indeed, many editors have special parsers dedicated to extracting the rubbish these packages insert into the content.)
For example, take the following content of an advertisement:
<p style="TEXT-ALIGN: justify">
<b>
<span style="FONT-SIZE: 11pt">
<span style="TEXT-DECORATION: none">
<u>
</u>
</span>
....
<p style="TEXT-ALIGN: justify">
<span style="FONT-SIZE: 11pt">
</span>
</p>
....
<p style="TEXT-ALIGN: justify">
<u>
<span style="FONT-SIZE: 11pt">
<span style="FONT-FAMILY: Times New Roman">The Role</span>
</span>
</u>
</p>
....
<p style="TEXT-ALIGN: justify">
<span style="FONT-SIZE: 11pt; FONT-FAMILY: Symbol">
<span>· </span>
<span style="FONT-SIZE: 11pt">
<span style="FONT-FAMILY: Times New Roman">…have at least 6 months to 1 year plus proven sales experience (ideally within recruitment, yet field sales, business development and account management are also desirable). </span>
</span>
<p style="TEXT-ALIGN: justify">
<span style="FONT-SIZE: 11pt; FONT-FAMILY: Symbol">
<span>· </span>
<span style="FONT-SIZE: 11pt">
<span style="FONT-FAMILY: Times New Roman">…will be professional and organised to manage the workload and the needs and expectations of the clients. </span>
</span>
<p style="TEXT-ALIGN: justify">
<span style="FONT-SIZE: 11pt; FONT-FAMILY: Symbol">
<span>· </span>
<span style="FONT-SIZE: 11pt">
<span style="FONT-FAMILY: Times New Roman">…will have excellent communication skills and show proven negotiation experience and be enthusiastic to drive their team.</span>
</span>
</span>
</p>
</span>
</p>
</span>
</p>
</span>
</b>
</p>
Anybody with the basics of knowledge of XHTML and semantic content can see that the mark-up there is quite poor. A real shame, as the content has been added in a logical manner, as bullet points. This example shows a number of violations of semantic XHTML, such as use of deprecated and meaningless tags (STRONG should be used instead of B), nested P tags (disallowed) and the bullet points are manual in that they are special characters of a particular font, not the XHTML UL/LI tags that should be used.
The fault doesn't lie with the user, or the site. The fault lies chiefly in the editor used to create this content. The editor is the radEditor from Telerik. Itself, a very functional and advanced editor. The editor claims XHTML support (though I dispute this) and is one of the better editors on the market. It has an attractive licensing package, and other than the poor XHTML output I have no complaints. This editor is one of the series of editors that rely on the built-in rich text capabilities of the browser, and any cleansing of the markup is performed in a mixture of server-side and Javascript code. To be fair, it is very difficult to apply automatic cleansing of human generated content. Therefore, with the best will in the world, these editors set themselves up to fail to achieve the most logical and smeantic content structure. Another editor does exist, XStandard, which does provide much higher quality content as it is an ActiveX control written from the ground up and deals in pure XML. Thie editor, however, is expensive to license in some scenarios and doesn't offer the cross-browser support that other editors provide.
So, here, the user as created their own content and posted it to the site, believing that their content will be effectively handled by search engines. While the site itself enjoys good search rankings and employs W3C compliant code in the surrounding mark-up, the weak nature of the generated markup lets down the content. It can be very frustrating as a developer to develop a site with high quality W3C compliant code, and then have dirty code be inserted by users via the available editors. So, it was with a heavy heart that I recommended that the owner of the site should withdraw any claims that the site is W3C compliant. This weakens it's marketing position, particularly when sold to a technical audience.
We have discovered a number of problems in user generated content:
-
Availability of quality tools is poor and unsupported
-
Knowledge of how to effectively present web content is poor within the user-base
-
Effectively merging static surrounding web site code with user generated code can be difficult
-
Controlling user content is difficult in order to minimise errors, accessibility concerns and quality
In order to be able to effectively publish user generated content, amid a Web 2.0 environment, and have it effectively aggregated and understood by various platform ans search engines, doesn't it mean that we have to exert a greater degree of control over the content - thereby detracting from the point of user-generated content in the first place? If submissions are moderated, and then cleaned up, users will feel as if their contributions are being edited which is clearly not an impression a site wants to portray.
Maybe a way of structuring users submission is needed. Provide the user with a template, into which users can add images, paragraphs, headings and other content in a semantic and controlled manner. The user can therefore create their content, how they want, but the content will be inserted in a well managed manner by virtue of the web site editing software. Maybe an idea for my next project ....
Got an eBCS Newsletter this morning that interested me, pointing me to www.datamigrationpro.com. It's a web-site dedicated to professionals (within and without the IT industry) who work with Data Migration. Seems a really good resource for best practice, experience and opportunities.
We all have to deal with data migration issues at some point. At the moment, I am working with some data that is 25 years old and is now in its third IT system, so the standard of data both in terms of input-quality and post-processing quality can be quite poor. My job is to develop a system that allows users to manage this data, but which, either silently or otherwise, corrects the data.
Of immediate interest to me was this article: 6 Misconceptions about Data Migration by Norma L. Davis http://www.datamigrationpro.com/?page=articles_norma_six
And she's right.
What other industry can give such power of functionality and access to data as IT? There are few professions that require such implicit trust and reliance on professionalism - and yet anyone can do it. If you asked the bloke on the street (who is asked everything, so must be quite knowledgeable) which professional could have access to their credit cards, personal data,medical information and their finance details within a single week they would be hard pushed to think of an IT-professional. Sometimes, it scares me the responsibility inferred upon us and we have nothing but trust to make sure we keep ourselves honest, or maybe a contract or non-disclosure agreement, but what are they really worth?
If you think of what happens to a doctor if they make a mis-diagnoses (often amidst much more stressful conditions than many of us are likely to experience), where they often lose their license to practice which inevitably ends their career, you have to wonder what do IT professionals have to not only make sure they operate within professional bouondaries but also that protects them?
I have always found the idea that computers are becoming easier to use a bit frustrating, not because it widens the use of IT and access to the Internet, etc. this is a great thing, but because it starts to become too easy for people to dabble. My view is that to work in IT, you need at least a recognised IT-related degree or similar qualification to even be recognised as being capable. If you come in to IT from another sector as part of your career progression, then years served is also a great qualifier. But qualification doesn't necassarily infer suitability.
What we need is a License to Practice. Doctors have them, Accountants have them, Social Workers have them. These people all have access to sensitive data and can cause signficant change in people's circumstances for better or worse. So can IT. If I worked in an e-commerce environment, I am trusted to maintain confidentiality and not to mis-use data when dealing with credit cards. If I worked as a contractor for the government, it would be easy for me to stumble across patient data, or other sensitive data, such as tax records. (With the British Governments performance, I'd probably be just as likely to stumble upon such sensitive data on a public bus the rate they keep losing CD's with our data on) Other than an employment contract and maybe a non-disclosure agreement, there is nothing to prevent me from serruptitiously mis-using such data.
So what if I get caught? The gamble of potentially accessing a lot of money either directly or indirectly by selling personal data to criminals or competitors, could pay off enough to mitigate potentially losing my job or being sued either by the state or my employer. It might be difficult to find a job, supposing that prospective employers can access your history (which would require some significant research on their part), but the hard times would pass. You'd be able to get back into the industry eventually, maybe even a different position with similar benefits - but a job none the less.
A License to Practice would work in two ways. First, it would work to prevent IT-professionals from leaking or mis-using data or functions of the data by threatening real and serious penalties. Such penalties could be set according to the indiscretion, but could range from fines through to revocation of the license, meaning that the individual could no longer apply for any position in IT as it would become easy for employers to search for the individual against the licensing body. Secondly, the License would protect us by the fact that it would infer professional trust on the IT-worker. If data is lost, and three people have had access to the data, one of which is a Licensed IT professional, it would be logical to think that the other two people would be potentially have less to lose. In a court setting, a legally accepted License would also protect us in terms of acting as a Witness, and also in the unfortunate event of us being tried for any charges brought against us.
A License to Practice would not be an impenatrable shield, behind which we can hide and act with impunity. It would come with certain obligations, which may be a requirement to renew the license, to pay a subscription fee (although this would certainly not be the only requirement), requirement to keep references current or requirement to keep ones qualifications current wither by academic study, or through professional qualifications.
This idea is not new, and is not my own. The British Computer Society, of which I am a member, has a long standing objective to provide a similar benchmark of professionalism which could be used as a requirement to operate either within a particular job or even the industry as a whole. I pay an annual subscription to the BCS to be a member, but this infers nothing on me other than my managers or colleagues I have worked with have recommended me for membership. As far as I can tell, it is quite easy to become a member. The fact I am a member will no doubt attract prospective employers and clilents. It at least shows that I take my position seriously. I am aware of the responsibility and risks associated with my work, and I pay £x hundred pounds a year to act as a guarantee that I am serious about it. There is a structure of memberships with the BCS. The next one I aim to go for is CITP, Chartered IT Professional. This requires a higher annual payment, but more importantly, requires a serious amount of work to go towards establishing qualification to operate (both in terms of academic qualification and years served) and to face an interview panel to establish suitability for the position. This is possibly a little higher than where I would see a License to Practice to operate, to be honest, as it is quite challenging to obtain - and with reason.
In my work up to now I have seen many examples of a requirement of a License to Practice in my own work. Most recently, for example, I was charged with the private membership details of users on a web-site. I was responsible for the data, as the technical role within the web-site, and as such I was required to treat the data with utmost security. This, I did, to the best of my ability, using security mechanisms like encryption and firewalls as only part of the solution, coupled with business procedures and limited access to ensure that not only was the data safe, but also that my professionalism was safe even though it made it quite difficult to do my own job. Other examples are quite frustrating, people "tinkering" with computers, resulting in me "finishing the job". If you weren't an electrician, you wouldn't tinker with the ring-main, so why tinker with your PC or web-site?
Whether we will ever see this I don't know. Without a body with more teeth than the BCS has, I don't see it happening. While the BCS is held in high regard by government and companies as a means of establishing a professional benchmark, without a serious IT event whereby data is lost or mis-used on a massive scale, I can't see any reason to require a Licence to Practice being seen as a necessity. That said, with the Government's ability to manage IT-projects and data currently under serious question - and their ill-thought out ID card plans - it may only be a matter of time before they fall over their IT obligations big-time.
Hello again, long time no write. I must apologise for my absence, I have been involved in a fairly large personal project which occupied the very little remaining intellectual capability I have left after my day job - not to mention time. What I learned during that time can wait for another time, however.
In my "absence", I see Microsoft have been very busy. They've formally released ASP.NET Ajax (which I still call Atlas), released WCF, WWF, WPF being .NET 3.0 (apologies to any acronyms I have failed to mention), finished .NET 3.5 and launched a whole host of extra bits and pieces for hobbyists - a group I think I can join now I have a little more free time. (No doubt I shall be boring you with some of these shortly, particularly the Robotics Studio)
As I work in the "real world", where training budgets are practically nill (and my inclination to go on training courses even less - they're just an opportunity for willy-waving in my experience, sorry, "networking") and time is tight the ability to use the technologies already mentioned comes rare. When it does come, however, you have to be ready because you need to learn them FAST. The NetFX tools have slowly been infiltrating into our department's consciousness recently, and as part of a project I am working on at the moment, I felt it was time to make the plunge myself and start playing with WCF (Windows Communication Foundation) to communicate across "service boundaries" (I even talk like MS, now).
To put a point of reference on this, it was the 26th Feb 2008, 2 days before the release of Visual Studio 2008 and - therefore in any sensible capacity - .NET 3.5. So, I am still using Visual Studio 2005 (and would be happy to for another couple of years, it is so much better than 2003!). My only option to work quick was to install the WCF Extensions for Visual Studio 2005. My colleague has previously done this, and indeed I had previously done this - but then I did my annual rebuild of my machine. So I tried to run the setup program, and got told a prerequisite is missing. The .NET 3.0 framework must be installed.Well, it is, and in addition to that, it has even been service packed (damn Windows Updates - have asked to be taken out of the auto updates group). So I thought maybe it doesn't like the change the service pack has made? So I try to remove the service pack - but it didn't allow me, telling me that programs depended on it.
So, I'm at a loss. How am I, as a developer in the "real world", able to access these new technologies when the Visual Studio version on which it depends for templates, etc. isn't even released yet? These technologies were released ages ago. Fair enough, they developed a no-support, no-warranty, don't-come-crying-to-me-when-it-goes-wrong extensions kit for VS 2005, but it seems that even that doesn't work now. I'm now in a difficult situation. I am keen to use WCF to solve a particular problem, but face either having to downgrade my expectations back to the lowly web service or begging for a sizable amount of money for the department to be upgraded to 2008 - even though it hasn't even been released yet.
The same problem exists for a number of technologies that are rolled into the VS 2008 release. Visual Studio is specifically designed to make coding faster, so templates and menu options are valuable to us as a busy department. Without which, how are people managing to use .NET 3.0, .NET 3.5 or the related gubbins - certainly work using this stuff (VS 2008 trial or VS 2005 + extensions) can't be in production yet?
The answer will come today, whether my colleagues are happy to move up to the next version so soon and whether the money will be available to validate my trial copy of VS 2008. Maybe I should delay asking for Microsoft Expression ....
Haven't blogged for a while. Not had anything intelligent to say.
This seems pretty intelligent ...
IE7 is awful. I swear the Beta and RTM wasn't as bad as the one thats running on my machine at the moment. It is always crashing ... humourously, while I was trying to blog about it crashing.
Yet on Vista, it is rock solid.
Hmmm.... between a crashing browser than behaves itself web-standards wise a little more, or a stable dirty browser, I know which one I'd choose.
Btw, any better way to find my own blog than having to do Sign in > View posts by Nathan Pledger (which brings a new window - poor accessibility wise)?
A provocative title maybe, but I have become a little disenchanted with open source of late, due to my various involvement or consumption of such projects. In my experience, open source projects have been poorly managed, overly prescriptive in terms of implementation, poorly documented and are a breeding ground for politics.
Media Portal
In the absence of any commitment to the UK market, I 'upgraded' my UK Season 1 TiVo to an HTPC (Home Theatre PC) solution. I did my research and found 2 open source solutions and several commercial solutions. One of the open source solutions was instantly rejected because it ran on Linux - and unfortunately I cannot afford the tinker time that this would require, much as I would love to use Linux as a platform. So I looked at the other one, Media Portal.
Media Portal (http://www.team-mediaportal.com/) is a Windows application that is designed to provide the features of an HTPC; such as DVD Playback, Music collection playback and management, Recorded and Live TV and Picture galleries. It does a whole lot more, too, thanks to its open source community. It has many things going for it. It certainly has a devoted set of followers, a lot of whom have contributed in some form, be it coding, design, skinning, translation or just general feedback.
It is fantastic what has been achieved with this application. Working with video and sound is never easy, but combine that with the myriad of hardware combinations possible on the Windows platform, much of which has to be "reverse engineered" to some extent as API's are not readily available. The support forum is also excellent, and the guys there were very helpful in my initial construction project of my HTPC.
Obviously, this is a direct competitor to Microsoft's Media Centre application, which is actually currently shipped as an entire operating system on an OEM basis. The applications are very similar in terms of core functionality, but Media Portal is more extensible, due to the open nature of the application. I'm not sure how it is now, but certainly when I was testing it I was amazed at how it was implemented. It ran as an application, so if you needed to use your PC, you had to close (or ALT+TAB out of it, resulting in the usual clunky black screens while DirectX or whatever video layer was being used was working) the application. This also stopped any chance of scheduled recordings being recorded. Microsoft, on the other hand, have theirs running as a service, which the client UI connects to. Therefore, no lost recordings. Even if the UI crashes, mid recording, the service is still going and no disruption is evident.
This issue has been highlighted, and the problem that rears its head here is change control. In a diverse community of developers, how easy is it to call a checkpoint and perform fundamental and breaking changes that would implement this functionality? Is it possible to expect developers to then revise their code accordingly? In a corporate environment, this would be simple: you get paid to do your job; but in a jobby scenario, it becomes much more difficult to control. So I wonder if we will ever see this particular change. As it happens, this is one of the main reasons why I dropped Media Portal in favour of Windows Media Centre.
I have contributed to the Media Portal project, as I was asked to provide my feedback on the usability of the program, and the configuration in particular. At the time of testing, the configuration was dysfunctional and was very difficult to understand, let alone configure in some places (TV Guide, encoders, etc.). My argument was that people should be isolated from this, as 90% of users wouldn't need to know about it. Obviously, this is an open source project, and one of its main strengths is the ability for advanced users to tinker with their set-up. It is the task of effectively marrying these two requirements that is the key. So, I developed an article (which I can provide on request) on 11-foot usability and was asked to help identify the improvements that could be made in the configuration section of the application. Whether my comments were taken on board is irrelevant, by the way! After submitting these recommendations, I was asked who commissioned the work. Apparently I had inadvertently walked into a political situation where senior developers in the team had disagreed somewhere along the line. This ensued with my work being disregarded to some extent, and a series of arguments about why we were even looking at this area. I will say that I worked with two people on this usability study, both of whom were most professional and helpful. I resolved that I wasn't prepared to apply time to a project that was, essentially disorganised and dysfunctional, so moved on. Besides, by this time I had installed and tried MCE and found that suited most requirements.
nHibernate and Castle ActiveRecord
I was recently in the market for an alternative data layer, to use instead of the CSLA 1.4 implementation we previously used. I was recommended by a friend to look at ActiveRecord, nHIbernate and Spring.NET. Starting with ActiveRecord, I chose a suitably low profile project to try it with. I have to say it was an absolute joy to use. Simple, quick. Then I approached an existing project I was working on that used a "real life" database, that is, a database that hasn't come straight out from a university lecture. You might have worked on one of these yourselves. They are evident by their use of character fields for number fields, composite keys and human-defined keys.
Then I started to experience problems. I could not understand the inflexibility of the initialisation procedure, which effectively required the consuming application to "know" about the classes and/or assemblies it was likely to use. I didn't agree with this, and asked why ont he forums and it took many attempts to extract the reason from them. I wasn't saying it was bad, or good; I was just interested in the reasoning behind it. Then, gaining confidence, I hit a hurdle: composite keys. Active Record could not deal with composite keys effectively, or at all elegantly. So I started looking at nHibernate. This is the core of ActiveRecord, I figured if I could use the main engine, I could avoid the wrappers which may be causing my problem. nHibernate is an excellent piece of work, and no mistake. You'll know it was based on the Java Hibernate project.
However, the use of nHibernate was not so easy. The documentation was good, so long as you didn't want to do any debugging. I was recommended to turn on the log4net logging service; a simple task you may think. It would be, if any web site I consulted (including nHibernates own wiki on the subject and the log4net home page at Apache) gave correct and complete information. It took myself and my colleague to figure out that you actually have to initialise it such a way (not using the Basic Configurator), a forum post to figure out that you have to tell nHIbernate to turn on the SQL logging and then a whole load of experimentation to figure out how to format the configuration. By the time I'd got this working, I'd lost sight of the original problem: composite keys.
It seems that both projects don't agree with composite keys. Whether they are bad or not is entirely irrelevant. The fact is, they are used and therefore a data-layer is going to have to know how to deal with them. Support for them was disjointed and dysfunctional. Documentation on them was poor. I really do appreciate the help I received on the forums, but when a problem hits a wall and people can't help, the issue just dies and the post started sinking down the list.
And yet ....
... we have Linux. That epitome of open source software collaboration. It is amazing to think that such a complex and diverse product is with us today, considering the issues I have had with just three projects. So I guess the key is to understand how Linux succeeded and how come other projects have problems.
A benefit of Linux is that it was headed by Linus Torvalds from the outset. The start of any project is always its most vulnerable time, and the ability to have the confidence and direction at this stage is essential. Linux can be argued to also be very modular. The kernal can be unit tested and then compiled together, then the individual applications that contribute to the full package can be developed by other multi-person projects or single developers. The point is, Linux is not a success or failure due to the success or failure of a single project; it is a product of many individual projects. This, I feel, is where open source can often stumble.
The problems I have experienced with Open Source can be clearly identified as being political. There are no technical issues at stake here, only technical issues as a result of politics. Arguments amongst project stakeholders is a major distraction and problem. Steps need to be taken to limit the opportunity of these to affect the project. When I was involved in the Media Portal project, I had clearly walked right into a situation that had developed between two of the developers. Sure, differences are clearly going to occur, but lets keep it to ourselves and not involve people who want to contirbute to the project.
The issue with composite keys is, I feel, a result of the drive of the various projects. We know that there will always be ways to bind the UI to the data, and frameworks will be developed and revised to meet these objectives. But these projects should be a solution to an existing problem, not a solution for solutions sake. The lack of effective support for something as basic as composite keys is very disappointing. As a result, coding for them becomes clunky and difficult. It took me 2 or 3 weeks to start and finish with nHibernate and ActiveRecord. It took 4 days for me to code my own alternative.
On the other side
There is another way. That is by spending money on a commercial product. Sure, a commercial product is entirely controlled by a single vendor, and updates can be slower. In the same period as I have been involved with these open source options, I have purchased products from a number of companies, most significant of which is Telerik. Telerik offer a product, radControls, wich includes a load of AJAX rich-client controls. Coding for them is easy, but there can be times when you need the support of the product team or a fellow developer who has had the experience. Posting to a forum is free, no matter the license, and members of the product teams do actively reply to posts. And if the problem can't be solved, then it is rarely left waiting, as you get the option to create a support ticket. Even users of trial licenses are able to escalate tickets. This results in effective responses that you can point at a payment and demand some service instead of lying frustrated at the feet of developers with no accountancy.
Conclusion
Open Source is a fantastic thing, lets not disagree there. It encourages innovation, personal and professional development and can be an excellent way to give something back. In no way do I disagree with the premise of open source.
What I have a problem with is that these projects are unnaccountable. A project needs to be accountable to ensure that it meets the problem it is intending to address and that the solution is still relevant and has not drifted or become irrelevant due to external factors. Open source projects are increasingly getting more and more elaborate and change control systems are being used to try and manage diverse development efforts within a single project body. These systems onyl work if there is direct control from above. While democracy is good, it isn't always useful. At the end of the day, if a decision is made, the person who made the decision has to be accountable to that decision. Whether this comes to pass as a result of a vote or a single arbitrary decision.
Support is a major issue for open source development. In the real world, developers don't have time to learn who things should be done, or how clever a particular framework is. They need to address a problem and address it quick. If a tool or framework is available, one should be able to get into it as soon as possible after a series of tests. A quickstart framework would be essential to this, where code can be literally cut and pasted into place. Any resources that are needed should be adequately documented and made available with the absolute minimum of effort. I'm not interested in searching for a particular version to compile with a particular version of a project. I want a single MSI that can be downloaded and installed. Kudos to the Castle Project for providing this! The documentation has to be suitably comprehensive and correct. There is no point in being clever when no-one knows how to use it. Trawling through papers and having to resort to blogs to address problems that should be covered on the core site is not convenient to most people.
Maybe projects could encourage a bit of funding by providing support services, whereby tickets can be raised on a pay-per-ticket basis or a subscription basis. Have a couple of people dedicated to addressing these tickets, and then have them address the forums that support the product.
I am willing to accept the limitations in man-power of open source projects, but they do operate within a commercial world. Unless they want to maintain their own eco-system of open source projects that use open source projects that don't make money or cost money, then open source will have to wisen up and embrace means of supporting and managing thier projects and people.
Came across this idea today and I do say it owuld be rather useful.
I have a series of classes that provide different types of offer for products, based on a shopping basket.
I have an enumeration that identifies the result of an offer being applied:
public enum MediaCodeOfferResult { OfferApplied,
OrderDoesNotQualify,
UnknownError,
MediaCodeOfferError,
MediaCodeOfferTypeError,
AssemblyNotLoaded,
TypeNotLoaded,
TypeNotCastable }
But I would like to use the same enumeration to identify, with more granularity, what went wrong in each of the classes. eg.:
public enum MediaCodeOfferXForYResult { InsufficientInput } :
MediaCodeOfferResult;
Wouldn't this be useful?
I can't see that it would be that difficult to do. An enum is just an int, after all. I find them really useful for quick and dirty result codes, like this, that don't need frameworks to be built to return values that can be accounted for and reacted against.
Reading www.thedailywtf.com today and I happened across this article about C# 3.0:
http://blogs.tedneward.com/2005/09/22/Language+Innovation+C+30+Explained.aspx
I've already mentioned I am unhappy with the LINQ implementation, in that it softens the difference between your tiers, but I accept it is a useful addition and am looking forward to using it myself - particularly for quick binding of controls.
This article really unnerves me though, it introduces some concepts which I feel would introduce lack coding practices. I was to believe C# would be type-strong, and that little more strict than C++.
Implicitly typed variables
Variables that imply their type on compilation, eg:
var i = 5;
var s = "This is an implicitly typed local variable";
var a = new int[] { 1, 2, 3 };
What happened to the type-strong C# I grew fond of? This is a reversion to the practices of a Variant, and the hassle that comes with it.
Object Initialisers
Instead of coding all those constructors, often repeating the same constructor logic, or at least calling the this constructor to make the code a little less repetitive. If you had a property PropertyA defined, then you could instantiate a new object by calling the ocnstructor, eg.:
MyObject o=new MyObject{PropertyA="Hello"};
But what if there was a reason why those properties were managed by the constructor?
I can see me having problems maintaining any sense of best practice in coding standards in ou team when this is implemented.
Was well impressed when I heard .NET 2.0 was going to be XHTML compliant. I should have realised it was too good to be true.
Why do server controls get assigned a NAME attribute?
XHTML Specification clearly states:
in XHTML 1.0, the name attribute of these elements is formally deprecated, and will be removed in a subsequent version of XHTML.
And yet I get markup such as:
<p>
<label for="ctl00_bodyContent_txtReasonsForSubmitting">Why should we include this?</label>
<input name="ctl00$bodyContent$txtReasonsForSubmitting" type="text" maxlength="4000" id="ctl00_bodyContent_txtReasonsForSubmitting" />
</p>
<p>
<input type="submit" name="ctl00$bodyContent$btnSubmit" value="Submit" id="ctl00_bodyContent_btnSubmit" class="submitButton" />
</p>
I can understand that maybe there is some legacy reason why the name attribute is there, but I don't think it would excuse it. Who is going to budge first? The browser or the server? Since ASP.NET 2.0 was a significant improvement, when are we likely to see this fundamental disparity addressed?
The reason why this is frustrating me is that between 1.1 and 2.0, the format of the NAME attribute has changed. It is delimited by dollar-signs now ($), not colons (:). And yet, the ID -- which we use at the server side anyway by virtue of the ID and ClientID -- stays the same format. To provide basic Excel-grid style editing, we use a Repeater and just process the incoming field names (or ID's, if we would have received them - which I guess we would have had the name attribute not been present) accordingly.
We were using xhtmlConformance="Strict" and a Strict 1.0 DTD, too.
Well done for moving to CS 2.0, btw. All looks to have moved over well. We have just implemented it at www.iomtt.com for the news and message boards and have been appalled by the quality of mark-up and the editor. We intend to rip it out at the earliest convenience.
More Posts
Next page »