Software Patterns shock, some people don’t like them!
To read more sober arguments for and against, see good old wikipedia
Debugging when classic ASP calls into .net
My first Mono application
Architect or fashionable label
So before you go spouting on about what a wonderful architect you are, consider this, did you just put some new wallpaper up or did you really build a new house?
Tech-Ed Developers Conference, Barcelona
Tech-Ed
Just got back from Tech-Ed so I thought I’d blog about the overall experience and then some of the sessions I attended.
The Venue
The Centre Convencions Internacional (CCIB) was a good venue for the conference. Although, like a number of these places, it’s not in the nicest part of town. However, inside the facilities were good, and the general layout was easy enough to navigate around. If I had a complaint, then it would be more to do with the session scheduling than the venue itself. The rooms were of differing sizes depends, I’d assume, on the predicted take-up of the session. The problem here was two-fold; 1. How they predicted the attendance, 2. The use of small rooms. The prediction of the attendance seemed to rely on the pre-conference questionnaire but this was flawed. Attendees were asked to say which session they’d attend per time slot. But in most cases I had 1-3 session I’d attend, and it would depend upon my mood at the time which I’d actually attend, but there was no-way to convey that. The second problem was the when a medium size room was free, the smaller sessions should have gone into them, instead they were left empty whilst the smaller session became full, very frustrating.
The Exhibition Hall
Nicely laid out with many of the usual suspects. Also included a (very grubby) X-Box zone, Speaker Idol and book store. The Communications area was just about the right size and the Ask-The-Experts was large although full of minority applications with not enough emphasis on the core areas.
I have to say that I think the Exhibition hall is a bit of waste of time, but hey its a way to load up your bags with junk that you’ll transport hundreds of miles to dump in bins throughout the EMEA region.
The big disappointment was the book store. It seemed to me that it was the books they were desperate to get rid of rather than those to support the conference.
The Sessions
Key Note – Windows Vista, the 2007 Office System and AJAX
Hmm, this started poorly and went into the world of the bizarre when a little girl from Pakistan was paraded in front of the conference because she’s passed some MCP exams. Although that should be applauded I can’t help but think that given her 101 demo of a calculator this speaks volumes about MCP exams and little about, "inspirational" stories. Still she seemed a nice girl but I hope she enjoys her childhood, she’s got the brains to do this computer thing for the rest of her life.
Then the marketing kicked in. A nice demo of the presentation services and AJAX but unless you’ve been living in a cave for the last couple of years there was nothing new to see, I felt pretty disappointed. The most cringey part was the, ‘pauses-for-applause’ that was greeted with silence. I’m not sure if this was the usual European sanity vs. American over-enthusiasm or the that everyone was just as underwhelmed as me.
Overall 3/10
SQL304 Upgrade Benefits of SQL 2005 for Developers
Didn’t survive this session. I was hoping for some real ammunition to move to 2005 but basically got a list of the new features.
4/10
DEV351 ASP.NET Developer and Designer AJAX Bliss with Visual Studio and Expression
Didn’t survive this session. After 30mins of watching a demonstration of how to change properties of a element in an IDE, I walked.
1/10
ARC305 Connected Systems – Communication, Flow, Rules and Logic
Hurray, a full session. Interesting enough talk showing the thinking behind the WinFx changes. Inspired me to consider changing some parts of the application I work on.
7/10
OFF301 Windows Sharepoint Services v3: Using Feature and Solution Definitions…
A bit long winded and disjointed. Groups of ‘theory’ and code but not used a such a way as to explain each other, not really helped by the constant audio bombardment of Todd Bleeker. Still got a few ideas but was worried about the overly complicated and immature nature of customizing Sharepoint.
5/10
OFF309 .NET Development on Sharepoint Technology
The previous Sharepoint session had piqued my interest in learning more about. This session was much better, although I didn’t learn a great deal that I have not already read or seen, it was a much better session.
7/10
OFF002 DEMO Building Collaborative Solutions with Sharepoint Services..
Quite a nice demo, I think attending this would have provided a decent overview of Sharepoint. It should some very touches, I especially liked the ability to derive a new field type – although the demo was a but flaky in parts. Another session that inspired me to make changes to our application, but also outlined areas where our application shines.
7/10
DEV348 Extending .NET with Custom Providers
Great session, even though I’d read a bit about the providers I’ve never had the chance to really use them. Jeff Prosise did a great job of showing how to use them, and also pointed out the typical pitfalls. This is what Tech-Ed should be about, not simply regurgitating on-line book material but actually sharing experiences. Although it was tempered by some absolutely dumb questions from the audience – I felt for Jeff here, how he resisted just telling the guy to get out I don’t know.
After the session I asked Jeff a question (of course not a dumb question 😉 ) about site maps per user and I thought the answer was at best weak, but then I’d guessed they’d be no answer to it, but then why not just say that?
9/10
DEVWD34 Applications for Windows Sideshow
Serendipity played a big part here. I wanted to attend an AJAX whiteboard session (had some gripes about the Microsoft implementation) but managed to go into the wrong room with three people in it. I thought it was strange to have so few people in a popular topic but without and slide showing me the name I was none-the-wiser. Eventually lots of strange digital devices were brought out, very odd. Then the title was announced and I felt too embarrassed for the speaker to leave him with just three people so I decided to hear him out. It was very interesting and I think it would be useful for practical applications. So I’m hoping to do some demos of this soon. I thought the speaker could have been a little more enthusiastic but again, learning about something brand new is inspiring and what I attend Tech-Ed for.
7/10
SQLWD02 – The Doctor is in: Tell us what hurts in SQL 2005
Good chance to talk to some SQL experts. The only problem was that I (and a few others) wanted to talk about specific issues whereas I got the feeling that they wanted to know about things that weren’t potential bugs but more about things that were slightly annoying. Anyway got a few things off my chest, although I think some of the advice was downright strange, but hey they’re the experts.
6/10
DEV411 AJAX Patterns with the Microsoft AJAX Library
A decent enough session. For the first time a session that actually pointed out some of the bad bits of the AJAX libriaries (something I’ve been banging on about for a while). Again the stuff you’d hope to hear. However, again, the session had fallen foul of internet, I knew pretty much all of it already. So although it was a good session I didn’t get much from it.
7/10
DEV319 Visual Studio 2005 – Advanced Data Access Techniques
Although there were some interesting points from this, I liked the way you could say that a field was a detail in a master/detail from the UI, the presentation was pretty dull. I left this one early.
3/10
Summary
Why do I go to Tech-Ed? I would say for the following reasons;
- Learn about new things
- Talk to the Experts rather than the forums
- Have some time to learn and think without the pressures of day-to-day work
- Be inspired
One of the biggest problems for me was that the internet is now a mine of information about new products. For example, I’d already watched a number of presentations from the PDC on the web and frankly the depth of those sessions blew anything Tech-Ed had to offer out of the water.
Talking to the Experts was good, but I found them to be very defensive, what I’d prefer is some decent open conversions rather than experts clamming up and toeing the company line. I understand why but it’s still annoying.
But having said all that, I do feel inspired in a number of areas, although I’ll have to say that I wonder what would happen if I just took myself off to a nice hotel for a week with a laptop and an internet connection. Would I learn more and be more inspired?
Adobe Photoshop Seminar Tour (London)
- Layers – Beyond the obvious. Nice talk about how to use layers to modularise your work
- Channel: More Than What Meets the Eye. A great talk, especially about what information is contained within a channel and how to utilise them for masks
- Master Class: Brush & Pen Techniques. Although good, I found this least interesting. Some nice features such as the random drawing of a brush, but there was little here to interest me
- Pen Tools & Filters. Some nice little tricks in here, I especially liked the use of filters on masks to produce a rusted metal effect
- Filter Magic: Creating Realism from Scratch. A small show case of what can be achieved through Photoshop.
Overall it was well worth attending, although I was almost reduced to hysterical laughter by the people in the audience (mostly artists and photographers) who kept repeated what was just said. The poor lecturer must have thought nobody was listening.
@Media 2006
Day 1
Keynote Presentation
Fun look back on the evolution of CSS and the varying support in today’s browsers. Nice little pep-talk before the rest of the conference.
Using DOM Scripting to the plug the holes in CSS
Hmm, not so sure about this one, just who was this one aimed at? I liked the way DOM methods, such as getElementById, were compared to CSS but then it quickly went down hill. The first couple of examples were mechanisms to insert code into a source document that would be repetitive (and perhaps ugly) to do by hand. E.g. the "zebra effect" where every other row in a table is a different colour. What struck me about these examples is that you’d be much better off to do this on your actual source, using a macro or pre-publish script, rather than relying on the javascript support of the client.
The other point that puzzled me was that he kept making the point that the code he wrote wouldn’t be the code you’d use since his knowledge of Regular Expressions wasn’t up to it. I could understand that you wouldn’t want to pollute example code with RegEx’ but I’d hope you’d show at least one example of how to do it correctly. He then mentioned a couple of points about controlling document size by looking at the browser and some 101 tips about detecting the browser support.
The most interesting point he made was that Dean Edwards has a page of scripts to make IE 6 act more like IE 7.
Rating, 4/10 and don’t bother with the "humour" next time
Fine Typography on the Web
Probably best known for starting up Zen Garden I was keen to see his view of typography. Very odd session. Talked about the fonts he liked and disliked making some very odd statement about fonts been boring because they’re overused. Talked about fairly obvious (you’d hope) points about the sort of fonts that users (i.e. Windows and Mac) would likely to have on their machines. Talked vaguely about why fonts like Verdana don’t always work – what about the fact that they are screen fonts, perhaps that’s why they don’t print well! Now for the interesting stuff, how to ensure the user has the font you want to use…basically you can’t. A few technologies were mentioned but basically they’re all rubbish. So you’re stuck with using the most standard fonts because you’ve got no real choice.
Rating, 4/10 – "yes we all know Comic Sans isn’t great if we didn’t we wouldn’t be here" – anon attendee
New Accessibility Guidelines WCAG 2.0
– Andy Clarke, Patrick Lauke, Gez Lemon, and Ian Lloyd
I admit I’ve not read any of WCAG 2.0 but I think I know the basics of accessibility. The discussion was interesting because it showed that the guidelines were just to odd to simply take and use without a second thought. What I took away from this was, be practical and do you best not to alienate a visitor but rather than attempt to implement every guideline. Then if you have a particular target audience then ensure their guidelines are met.
Rating, 7/10 – the panel seemed at odds over some points and re-enforced my belief that guidelines are too weak to adhere to.
Designing the next generation of Web apps
– Jeffrey Veen
I nice motivational speech about web applications, although I couldn’t help thinking that bulk of the audience are here for web design, rather than web applications, but a nice keynote style session.
Day 2
Bulletproof Web Design
– Dan Cederholm
A decent enough talk about the basics of good web design, but again, if you didn’t know this already what are you doing here? A few people asked questions about the age old problems of how to structure your page one way but present it in a different order. Although the answer was correct, it wasn’t anything new.
Rating, 6/10 – good but basic
Beyond a Code Audit
– Robin Christopherson
The first think to say about this session was that the venue mucked this one up. No network for the presenter, bits of stage falling down oh what a mess. However, the talk itself was excellent and really well presented. I must admit I’d never considered the problem of dyslexia and fully-justified text…although fully justified text on the web is a sin so I’ve never done it.
Rating, 9/10
Internationisation: Awakening the sleeping giant
– Molly E. Holzshlag
Lots of enthusiasm from the speaker with a very…American, style that’s not to everyone’s taste, I didn’t mind it though. However, although she made a few interesting points (First impressions are very important, Internationalisation is a form of accessibility) the basic result was that you need to employ skilled people in your target locale to correctly design the site. Is that really news to anyone? Ok so I live in Britain and the majority of the sites I’ve had a hand in are English only and if I lived in Brazil or South America perhaps I’d feel different but I didn’t really learn anything new here.
Rating, 6/10
Yahoo! vs. Yahoo!
– Nate Koechley
An interesting look at a few Yahoo! applications. Again, all about applications rather than web design per se but it was interesting and had some real world points to make. Sometimes what he said seemed contradictory (as picked up by some of the questions) but it did reaffirm my feelings about web 2.0 style applications and coming from such as big company that was good to know.
Rating, 8/10
Microformats: Evolving the Web
– Tantek Celik
On the face of it this is a weird subject. Microformats look useful and I dare say a number of them will be common place soon but I’m not overly sure much of the audience really cares about creating them…but I could be wrong. I know I’ll have a go at using some of the most common ones though so I guess it served its purpose. I can’t create this on this blog since it removed my attributes <grrr>.
Rating, 8/10
Overall Impression
A quick note about the facilities…poor. Registration was chaos itself, the lunch was very poor, and there were no refreshments between sessions…not even a drink a water.
I think the problem with @Media is that it fails to explain who the sessions are aimed at. I kept thinking, "if you didn’t know that, then you wouldn’t call yourself a web designer therefore what are you doing here?". But then what is a "Web Designer"? What experience do you need to have to attend a session? I come from a coding background with little typography or layout experience so the Web 2.0 applications stuff is interesting to me, but it’s really the non-coding stuff that I want to see. Whereas I’m sure the opposite is probably true of the artistic web designer that wants to know how better to render their designs for the web with all this strange javascript code. So while I got the odd nugget of information very rarely did I feel that I was actually learning something. However, what I did feel reassured about was that not even the experts really knew the answers to the problems that most people face, so at least I know that I’m not alone or missing some obvious "fix" to the problems I see. So would I recommend going next year? If they explain who their intended audience was then I would recommend it, otherwise I think you’d be better off using the web to look for the resources…with the possible exception of Robin Christopherson who’s session really does need to be "seen" (the obvious irony is that he’s blind) to get the full impact.
Technique vs. Technology
Technique vs. Technology
Over the past few years or so I’ve noticed a phenomenon that I’m calling Technique vs. Technology.When developing software solutions for computers there is always a number of ways of doing something but usually there is a much smaller set of recommended patterns that should be used. However, there are a large number of developers that don’t follow these patterns and produce solutions that have inherent problems. The reason for this is either ignorance or cost cutting, maybe both. Either way it is the end-user or customer that suffers and gives software development a bad name. So what’s the answer? The obvious reply to this is to invest in educating the developer community and to produce software tools to help developers avoid common pitfalls. Yes, to my mind this is the correct way and with the recent surge of concepts like Software Factories it would seem that many others share that opinion too. But the software/hardware industry have another angle, lets use technology to compensate for poor technique and for backwards compatibility. However, lazy (or ignorant – is there a difference?) developers can rely on these features and will never learn or comprehend why they should learn the proper technique. But then again, why should they? So I’ve waxed lyrical for long enough now, how about some examples?
Stored Procedures vs. embedded SQL
Back in the day Microsoft provided stored procedures for SQL Server with one of the benefits being that the plans are cached and reused. The problem was that when Microsoft released ADO a huge number of developers, using SQL Server, ignored stored procedures and simply issued statements directly to the server. Although ADO should be praised for its easy of use and flexibility it allowed lazy developers to produce grossly inefficient code. Consequently Microsoft spent the next few years defending ADO and repeatedly telling developers to use stored procedures for performance code. Eventually, although I’m sure there’s and official reason for this, they caved and provided statement caching which, IMO, panders to the lazy developer…although I concede there are some advantages to this. This is my first example of technology compensating for the lazy developer but really does it matter?
CSS vs. Table slicing
Web page design has gone through somewhat of a rocky few years, caused mainly by inconsistencies in browser implementation, producing two basic techniques for page layout; Cascading Style Sheets (CSS) and Table (image) slicing. CSS is the recommended pattern with lots of good points ranging from structure/layout separation, accessibility (see PDA later), downloads efficiencies, etc, etc. However, early browsers (and indeed inconsistencies with modern browsers) prevented the use of CSS. To get around this the table tag set was used to create layouts by slicing images into small chunks that could be placed within equally sliced up tables. However, there are a number of problems with this approach, basically the opposite of what’s good about CSS but for me the important problem is the accessibility. The most obvious of these problems is scaling the text within a table. In the majority of case this simply breaks the page, with text disappearing or the image slicing going horribly wrong and the original dimensions change. But wait, the browsers technology has a trick up its sleeve, zooming. The browser simply zooms the whole page rather than altering any specific Html element/attribute. So I can use tables safe in knowledge that it works on almost every browser and the user will be able to zoom the page…providing they download a nice new browser. Ok it still doesn’t solve all the problems of table slicing but it certainly becomes a strong argument especially when CSS can be troublesome to get right on all the browsers.
CSS vs. PDAs
Viewing Html on a standard 15″ screen has long since been superseded with all sorts of odd shaped viewing devices. Monitors now come in all sorts of sizes and resolutions, but the really odd sizes are reserved for the smaller screens of handheld devices such as mobile phones or Personal Digital Assistants (PDA). These screens cannot, sensibly, view a screen designed for 800×600+. Step in CSS, with device specific stylesheets you can create a nice layout for the smaller screen whereas those nasty-old table sliced sites look terrible. Well back to the real world. PDA browsers have long since given up waiting for CSS and have taken it upon themselves to use their technology to break up the tables and provide a decent view of the table sliced page. Whereas, many of the browsers don’t understand a hand-held media type and the CSS site looks terrible. So again, it’s all too easy to say, why bother?
Code Optimisations
One of the great aims for software development is that the developers should focus on the logical problem rather than spending their time solving issues with their chosen implementation language. One such area is optimisations. True they can make a big difference but if the developer types if MyString == “” or if MyString.length==0 then this sort of optimisation should really be caught by the underlying compiler. Another classic in the world of .net is the StringBuilder. If I use FxCop it will tell me that I should be using a StringBuilder for string concatentation within a loop. So rather than tell me that, why doesn’t the string concat’ do that behind the scenes? If I really don’t want to use a StringBuilder class I should be able to create a SimpleString type or something! In theory I shouldn’t have to concern myself with such optimisations.
Summary
So here is the real question, why bother spending the time using the “correct” techniques when the the majority of people don’t and therefore the technology ends up compensating for them? Granted they don’t compensate for everything, but will it just be a matter of time before they do?