Archive for the ‘Best Practices’ Category

Inversion of Control Containers Links

Tuesday, June 17th, 2008

I’m slowly getting my head around IoC containers and want to note a few useful links for future reference. As things tend to go in my geeky exploits I read about and learn these ideas from the .net world, who often have picked things up from the Java world, I then try to find out who’s doing similar stuff in the Flex world and am generally not disappointed, which is very cool. So these links below are a mashup of various technologies but should be useful to anyone who has been hearing about IoC and wants to learn more regardless of language/platform.

The ‘Textbook definition’ by Martin Fowler
Very useful explanation with some basic sample code (.net) by Ayende
Castle Windsor step by step basic intro (.net)
Prana - a Spring-ish IoC Container for AS3 by Christophe Herreman (via jesterxl)

This stuff doesn’t come naturally to me to say the least so if anyone else has any links they want to share feel free to post them in the comments.

Flex Code Coverage Tool

Sunday, April 13th, 2008

I hope to find some time for a more thorough post on this but there is a new Code Coverage tool available for Flex, check out Flex Cover on Google Code:

http://code.google.com/p/flexcover/

mp3 popular musicABCDEFGHIJKLMNOPQRSTUVWXYZ|Artist By Music Genre

360 Flex Europe over

Saturday, April 12th, 2008

Okay so I’m a couple of days late on this one, however taking 3 days out of work takes it’s toll on the remaining 2 days of the week when you get back.

We got to the hotel on Sunday morning with the best intentions of spending the day doing touristy things, unfortunately because of our flight timings we basically traveled throughout the night and just got the hotel and crashed for a few hours. First thing I did after I’d caught up on sleep was sort out wifi access, not good. Best part of £70 for 3 days wifi is ridiculous… and it was slooooow. This was definitely an issue for a hotel full of geeks and would suggest anyone organising a conference takes internet access into serious consideration when finding a venue.

We later went down to the speaker dinner which was a relatively quiet affair but was great to meet new people and the dinner was pretty decent. At this point to be honest I didn’t have particularly high hopes for the conference because of the low number of attendees. Fortunately however my initial concerns were not upheld.

The first day of the conference for me went something like this:

Keynote: nothing new for me here but good to see Adobe having a presence.

Michael Labriola: Dense and Hot - An Introduction to Your Application’s Start Up
Michael has a great presentation style, he was relaxed and managed to get through quite a lot of very useful information in a relatively short space of time. I think conferences could do with more of these sorts of sessions as many seem to have a lot more introductory level sessions. I learnt a lot from Michael in the session and throughout the rest of the conference. He’s also a very smart and funny guy.

Marco Cassario: Better Flex and AIR Applications Using AJAX
Marco gave an interesting presentation on using AJAX in AIR but he also covered some general good practices for Flex development. I learned a few things AJAX related that I didn’t already know but I think generally AJAX just doesn’t get Flex developers very excited. Marco presented his session well and got through a lot of material but I would definitely like to see him present on some more advanced Flex stuff in the future.

Luca Mezzalira: Flex Bitmap Effects!
Luca gave a fun presentation on Bitmap effects and had some good samples to share. I’ve not really done anything with bitmap effects before and definitely now have the required knowledge to do so.

Piergiorgio Niero: 3D Render Engines in the Flash Platform
Piergiorgio gave a great presentation starting with some of the basics of 3D in flash then running through to demonstrate the build up of some very impressive Papervision3D demonstrations and Papervision in Flex. He wasn’t too confident in his English but certainly got everything he needed to across and the examples and sample code provided are great.

Sakri Rosenstrom:Invalidation Routines, Pounded into Your Cranium Once and for All!
Unfortunately I had to deal with some work issues during Sakri’s presentation which was really annoying as I wasn’t able to concentrate on it fully and it was a pretty technical session. What I did manage to keep up with was very useful and well presented and Sakri managed to deal with some unexpected technical issues very well. I hope to catch his session again some time.

Neil Webb: Cairngorm for Beginners
Neil’s a good friend of mine and I’d seen parts of his presentation beforehand but was looking forward to seeing the whole show. He was a little nervous at first and perhaps spoke a little quietly to begin with considering he wasn’t using a mic. However, once he settled into things the presentation went very well. He has some VERY funny slides and if you’re going to scotch on the rocks and/or 360 Flex San Jose definitely check out his session. Even if you know Cairngorm go see it for the Phat controller, Sexed up Flex Frameworks and Sexyometer! If you aren’t familiar with Cairngorm then Neil breaks it down into a very digestible manner and uses great metaphors to explain what’s going on.

Borre Wessel: Cairngorm Deepdive
Borre presented a good session on Cairngorm and other useful good development practices. He covered some topics that I’ve been looking into lately such as view patterns and did a good job of explaining the Presentation Model pattern which is a very nice approach. He seems a pretty laid back guy which made him approachable for questions but perhaps could do with a little more enthusiasm and volume to maintain the audiences interest. Nevertheless another useful session for me :).

Finally it was my turn to do my presentation on Developer Best Practices. I was a little worried as I hadn’t prepared quite as much as I’d have hoped to (being ‘dragged’ out for pizza and 1 litre beers the night before didn’t help :P). I was more concerned however by the fact that almost everyone I’d met was a very talented and skilled Flex developer who more than likely didn’t need to be told the best practices I was there to present.
This concern was re-affirmed as I kicked things off by asking the group “Who uses source control?” as the preamble to my 10 minutes I’d planned explaining source control… to which all but one of the attendees already did! After struggling preaching to the choir for a few minutes, I decided to scrap that and adopt my reserve tactic of opening the topics in the session up for debate.

This was also a concern of mine as in many of the sessions the audience tended to stay pretty much silent. Fortunately for me I had Michael, Sam, Neil, Robin, Sakri and various others in the session who really came into their own and spoke out. We discussed various OOP practices, design patterns, unit testing and a great debate on pair programming (always a good one to throw in if you want some audience participation!).

I enjoyed the session in the end and definitely would like to try the discussion approach in the future as I managed to learn a few things from the guys I was supposed to be presenting to and I’ve had some good feedback about it (despite the ropey start).

Overall, despite initial concerns 360 Flex Europe turned out to be a great conference and I’ve very glad to have attended. Thanks to the 360 guys for arranging it and thanks to everyone I met there.

FREE 360Flex

Friday, March 28th, 2008

Just to help spread the word, Day 1 of 360 Flex Europe is going to be absolutely free!

If you’re not already signed up go check it out now: Free 360Flex Conference day 1

(If you are already signed up, refunds for day 1 are being issued over the next couple of months).

via Peter Elst

Bridging the gap between those that know and those that want to know

Saturday, February 23rd, 2008

Nirosh has posted a great introduction to OOP concepts and architecture that attempts to provide a stepping stone for developers towards systems architecture. This article is a great read if you’re interested in, but frustrated by all the OOP best practice terminology and procedures that are flung around in the elite’s blogs and forums.

Read the article over on code project.

I also agree with Nirosh’s comments about the void between the experienced and the interested which is why this is very much in alignment with my upcoming talk at 360Flex Europe where I’m hoping to demystify some of our industry’s latest buzz best practices.

Check out 360Flex Europe.

When to invest in an improved user experience

Saturday, February 9th, 2008

Tony MacDonell of Teknision has a great post over on InsideRIA about The supply and demand of user experience.

I left a comment there but whilst it’s in moderation but it’s raised some more thoughts for me so thought it deserved it’s own post.

Tony writes about how an investment in user experience is driven by supply and demand of said experience. In slow moving uncompetitive markets, this added value of a slick user experience isn’t necessary and therefore is unlikely to receive heavy recognition and investment. You only need to look at many banking systems, trading platforms and data entry software to believe this is the case (N.B. these being slow movers rather than uncompetitive).

Tony also mentions the example of router interfaces as something that blatantly receives little UX attention because it’s more appropriate for router manufacturers to compete on price rather than improving user experience.

The general cycle of things seems to be as follows:

1 - New product enters market, has no competition, focuses on functionality over form, it works, it does the job, reaches x% of market.
2 - Competition appears, attention on products grows, market grows, slice of pie desired grows, product’s prices reduced.
3 - Prices reach lowest reasonable point, value needs to be added, user experience rears its head, flash/flex guy gets a new contract.

This sucks. And in my view is stupid. At point 3 we’re still trying to generate more sales/users/whatever so we try to build desire through improving the product experience. Yet we’re now making less per unit than ever before.

Had we invested in a suitable UX in the first instance the costs of doing so would have been less (I.e. not having wasted time and money on the first iteration crappy implentation), we’d have a much better, more desirable product, we’d have benefited from the additional interest whilst we’re charging a premium and we’d be raising barriers to entry for any future competition.

You could argue the new interface extends the product lifecycle which would otherwise have dropped off sooner but in my opinion the advantages of doing it right first time far outweigh that.

Attention to Detail in Rich Internet Applications

Wednesday, February 6th, 2008

Adobe’s Ethan, Ted and Ryan recently gave a big thumbs up to Firebrand an RIA for watching adverts.

Niels Bruin responded with what I think is a very good wake-up call to the starry eyed approach to reviewing web apps with lots of transitions, reflections and other shiny bits. Niels highlights some real basic usability faux pas that Firebrand made such as mystery meat navigation, red punishing looking confirmation messages and inconsistent design touches.

To be honest, I read all the commotion and Niels put down before I looked at the site and to be fair to Firebrand I probably wouldn’t have picked up on those points myself. But then I’m not and would not claim to be a UX hotshot of any kind. The key point for me is that the points raised by Niels do not require a magical usability eye and could very easily be a printed checklist and implemented as part of a quality control assessment before final delivery of a product. To be fair I do also agree with the points Ryan makes in his followup and I’m also all too familiar with things such as expectation and deadlines which can all to easily prevent this much-needed attention to detail. However, if we keep reminding ourselves of it then hopefully it will become second nature and not needed as a time consuming afterthought.

If you’re responsible for the creation, delivery or quality of a customer facing project, take 20 minutes, open up your word-processor of choice (perhaps use it as an opportunity to try out Buzzword) and hack together a simple list of quality control checks.

Here’s a handful of checks plagerised from Niels post and an old post I remembered by Aral to get you started, copy the below and paste into a document, print out 10 copies, run through your current project and tick each one off and you’re well on your way to becoming a quality control engineer!

Niels’ Firebrand wrist-slap:

  • Make sure any icons/metaphors are extremely obvious or explained with tooltips or other indicators
  • Make confirmation messages look positive and warnings look like warnings (I.e. don’t positively confirm an action in red)
  • Is everything laid out consistently? How much effort would it really be to tweak that button a few pixels to line up properly?
  • Can familiar controls be used in a familiar manner? E.g. can I scroll a scrollbar using my mousewheel, drag it and click up/down arrows?
  • Have you tested on all likely platforms/browsers? At least WinXP, Vista, Linux, OSX with IE6 & 7, Firefox, Safari, Opera

Aral’s old post on UI principles (interpretation by moi for checklisting purposes):

  • I can use it but am I a ‘typical user’? Even better: can I get an intended user (or several) to use it?
  • Does validation “prevent not scold”? Does the user get scolded “YOU IDIOT, WHY DIDN’T YOU SELECT A GENDER BEFORE CLICKING THAT BUTTON?!” or do we just make the button un-clickable until the gender has been selected with some unobtrusive instruction to do so?
  • Does the user receive sufficient feedback? If the user makes an interaction, is it obvious that interaction has been acknowledged by the app and the expected result has happened? (see Niels point on adding to faves).

There’s a load of other things that can be added to this list, for generic testing and I’m sure for specific audiences/companies/application types etc. I’m going to do some digging on other principles people have come up with as I know there are a ton out there but whilst this is topical I thought I’d add my opinion and throw in a call to action to anyone reading.

Foundations of programming

Sunday, January 13th, 2008

Karl Seguin, a .net developer for Fuel Industries has written an excellent series of posts on modern development techniques. Examples are based on .net and associated open source and commercial tools and utilities but the theory is great reading for any developer.

A lot of what is covered I will be bringing into my talk at 360 Flex Europe and will be referencing and expanding upon in some upcoming blog posts with a Flex/ActionScript slant.

Best Practices talk at 360 Flex Europe

Sunday, January 13th, 2008

360 Flex Europe is going to be happening in Milan, Italy on April 7-9 2008.

I will be giving a talk on Development Best Practices - What are they and which to choose? Which basically, is an attempt to demystify a large number of ‘buzz’ best practices in our industry at the moment.

Like myself, I’m sure many people hear all the terms and have all the best intentions of looking into and following these great new ideals, techniques, tools and processes but realise weeks later they’ve been too busy doing real work and still haven’t gotten around to it. The talk is aimed at those who are not already following these practices but are keen to know what all the fuss is about. Obviously many already do but might wish to come along anyway and join in the discussion/correct me when I’m wrong :P.

The overall aim of the talk is to take these concepts and ideals that are thrown around the community as “Must-dos” and firstly, impart an understanding of what each is and then explain their merits and drawbacks and when/when not to implement. Also I’d like to provide enough info for anyone to take their first-steps in the mentioned practices without feeling overwhelmed by everything there is to learn. Due to the time available it won’t be an in-depth hands-on/how-to although there will be code-samples and demonstrations. All of this will be with a Flex bias but there will be a smattering of other related technologies thrown in for good measure.

The talk is still being put together but the current line up of things I’m considering to cover are as follows:

OOP best practices
Design Patterns
Frameworks
Source control
Agile Development
Unit testing
Working with server-side technologies (Web services, Remoting etc)
OR Mapping
Code Gen
…Suggestions? Feel free to comment below if you think I’m missing something important.

There was a lot of good press about last years 360 Flex in the states and all looks good for this year’s in Atlanta at the end of February. Myself and some colleagues will be attending all of 360 Flex Europe so if you’re going drop me a note and join us for a drink. Looks to be a great conference that is great value at $360 so I suggest you go sign up now :D 360 Flex Europe.

New .Net Tutorial “Introduction to NHibernate”

Sunday, November 11th, 2007

I’ve just written a new tutorial on NHibernate (an Open Source OR Mapper for .Net).

As ususal any feedback much appreciated. :)