360 Flex Europe over
April 12th, 2008Okay 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
March 28th, 2008Just 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
NHibernate Mailing List
March 21st, 2008Bill Simser has setup a Google Group for NHibernate, forums are old school and I much prefer mailing lists and blogs nowadays so thought I’d share it:
Bridging the gap between those that know and those that want to know
February 23rd, 2008Nirosh 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
February 9th, 2008Tony 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.
USB drives for all @ 360Flex Europe
February 9th, 2008I just noticed on the 360Flex Europe blog they’re giving away 1Gb usb drives to every attendee.
You can then hijack the speakers’ presentation files on the spot. This is a great idea as speakers often don’t get chance or time to send in their presentations and files for attendees to make use of. This is also a good promotional tool for any budding sponsor who can either advertise their logo on the USB drives or I’m sure if you ask nicely (in a sponsoring kind of way) they’ll let you put some promo software on the keys that are distributed if you drop them a nice email to inquire (sorry if that wasn’t the plan 360Flex guys).
If you’ve not got tickets yet go check it out http://www.360flex.com/360Flex_Europe.
FileZilla passive mode on Windows Server 2003
February 7th, 2008This took me a while to figure out so posting for any future server setups I have to do.
To enable passive mode in FileZilla FTP server on win2003 you need to do the following:
1 - Open a small range of ports in your windows firewall
Firstly make sure port 21 is open.
You can do this under Control Panel -> Windows Firewall -> Exceptions tab -> Add Port
Enter 21 as the port number and FTP as the description ensuring TCP is selected and OK.
Then you need to do the same with a range of ports typically of a much higher number, you can do this using the same approach but that will take a long time to add them, alternatively, create a new textfile called passiveopen.bat and paste in the following:
-
Echo OFF
-
-
ECHO OPENING FIREWALL PORTS
-
FOR /L %%I IN (6500,1,6550) DO NETSH FIREWALL ADD PORTOPENING TCP %%I FTPPort%%I
-
-
REM iisreset
-
-
ECHO FINISHED
-
Pause
save then open command prompt (start, run, "cmd" enter)
and type the path and filename of that textfile (E.g. "c:\passiveopen.bat") which will open the ports 6500 to 6550 for you.
2 - Open the same ports on your router/other firewalls
Depending on your setup you might need to open the same ports on your router and any other hardware and software firewalls you have running.
3 - Tell FileZilla to use those ports for passive mode
In FileZilla server click Edit -> Settings
Select Passive Mode Settings from the menu on the left and enter the ports in the custom ports range box.
Et voila! passive mode should now be firing on all cylinders. Simple and obvious but thought I'd share in case anyone else doesn't want to dig through the docs and isn't too familiar with how passive mode works.
Attention to Detail in Rich Internet Applications
February 6th, 2008Adobe'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.
Multiple Projects in one Solution in visual studio 2008
January 18th, 2008Okay, I vaguely remember having to do this in VS2005 as well as VS2008 and have no idea why this is the default behaviour. It seems obvious to me that it's useful to have multiple projects (read class library projects) with a web project under one solution in Visual Studio.
However, by default when you open a new project the project itself is the root of the solution and you can't add another to it. Even if you create a blank solution file then 'Add existing project' it just automatically drills in and sets the first added project as the root and you can't add any more.
Simple fix thought, all you need to do is:
Click Tools -> Options -> Projects and Solutions -> General -> check 'Always Show Solution'
And you're sorted.
