Things to make and do

26 05 2009

Just a quick post to mention Brad Umbaugh and RJ Owen’s really useful presentation about the Flex component lifecycle – great if you need to create your own components. I stumbled on this via Mrinal Wadhwa’s blog, which has some more goodies too.

In other news, I’ll be heading to FlashCamp in Birmingham on 16th June. They’ve organised a very boss-friendly schedule, and former colleague of mine James Whittaker of RefreshingApps.com will be presenting on Flex component skinning, something he set the bar very high on with Prudential’s award-winning Retirement Calculator.

On a completely different note, if you’re a music (or Scrumpy) fan going to Glastonbury Festival this year, you might find this clash finder useful. I’ve got into an Irish band called Fight Like Apes recently and I noticed they’re playing the Queen’s Head stage on the Sunday. Really looking forward to it, just hope the weather plays nicely this year!





Highlights of the head web conference

28 10 2008

What a great conference! There were a few technical glitches here and there, but this was the first global virtual conference I’ve been to (and the first <head> conference), so I expected more issues than there actually were. Respect to Aral and friends! Here are my highlights (and notes!) from the conference.

  • Richard Rutter’s Facing up to Fonts, covering the typefaces now bundled with Windows Vista and the future of font embedding on the web. Not to mention gift ideas for font geeks.
  • Kimberly Blessing’s talk on how to develop more specific standards than just the W3C’s for your team or company, including things like style and process. Kimberly maintains a blog dedicated to web standards.
  • Cliff Hall (of PureMVC fame) presented on how to make software that lasts by adapting easily to change.
  • Aleks Krotoski’s talk on social play and games, as well as the serious applications that spring from them. Interesting that this conference had a Second Life hub… I think she mentioned Marc Prensky on the way too. Sadly it’s all a bit of a blur now and all I seem to remember is how cool it was that she was mid-way through a road trip and was doing the talk parked up in the car :) I can only hope the slides will be up somewhere soon to refresh my memory, if not only to delve into the social psychology of gaming a bit more; I think I left off at Milgram when I did my psychology degree…
  • Chris Allen spoke about Red5, an open-source JEE media streaming and remoting solution for Flash & Flex, and the Jedai Red5/Flash component framework. Red5 is available as a .war file for deployment to your favourite JEE web container or a full server based on Tomcat. There’s also a handy Eclipse plugin.
  • WPF guru Robby Ingebretsen’s ‘From the Deathstar: An insider’s view of Microsoft’s Silverlight‘. Healthy banter ensued from the Flash/Flex fanboys :) It was widely acknowledged that Silverlight isn’t quite there yet when compared to Adobe Flex, but it’s catching up fast. Interesting that Geoff Stearns’ You Tube Lessons Learnt talk didn’t mention any move to Silverlight which was rumoured to be on the cards. Also support from the Mono guys makes Silverlight more cross-platform than people might expect. From my perspective, Microsoft promising not to sue some of the people who use it before 2011 doesn’t seem to me like embracing the spirit of open source, as remarked by others, whereas Adobe has released what it can of the Flex SDK under the Mozilla Public Licence. Admittedly the exceptions include the Flash Player and AIR, but at least they’re giving redistribution rights for what you build. As I understand it they’re even granting rights (on request) to bundle the SDK with an open-source ‘Flex Builder’ analogue of your own, if you wanted to.
  • Lynda Weinman shared some thoughts on the past and future of education.
  • Ben Segal revealed the fascinating story of how the web could so easily not have happened. A supportive boss gave him free rein to try out IP networking at CERN despite unfavourable politics, paving the way for Sir Tim Berners-Lee’s now ubiquitous inventions: HTTP and HTML (aka the World Wide Web). Can you imagine a world without lolcats?! ;) This was done with hardly any resources, and the external networks guys with more funding and clout being mostly opposed to anything bar X.25, let alone something as un-European as IP
  • Chris Millstalk on improving web standards adoption. Chris discussed how the lack of standards in the past and the lacklustre response of some vendors in implementing them when they arrived have contributed to the lack of widespread standards adoption today. To help counter this, Chris started the Web Standards Curriculum, supported by Opera and released under Creative Commons licence. Chris mentioned another useful presentation on how to get your company to adopt web standards. It was mentioned in the chat afterwards that the big corporate CMSs can be a barrier to accessibility – money is spent more on marketing than technical aspects like standards compliance, whereas some of the open source CMSs are much better in this regard but don’t have the cash to shout about it.
  • Simon Willison’s Web Security Horror Stories talk, covering how to defend applications against SQL injection, XSS attacks (<c:out> is your friend Java people), XSRF and Clickjacking. The intrinsic risk in allowing users to add markup to their own content were discussed. Libraries which parse user contributions should have reams of unit tests before you get near to trusting them. Even using libraries that support simplified markup like Textile can be risky. It’s scary to think how many applications out there must have little or no defence against XSRF. Simon discussed using form tokens (nicknamed ‘crumbs’, can basically be an SHA1 hash of session ID, user ID and a salt value) to ensure a form has come from your site before accepting the POST, mentioned Ratproxy as a useful security testing tool for web application developers, and also the OWASP and Planet Web Security sites for further info (though the latter seems to be offline at the time of writing).
  • Paul Boag’s Your Design Sucks talk, and his company’s Getsignoff tool. Paul mentioned Patrick Haney’s web design inspiration Flickr collection to help choose a mood for site design with a client. Pre-empt common client concerns when presenting designs. Use things like Feng-gui for heatmaps and clicktale for interaction tracking. Control client feedback to focus on users and business needs rather than personal preferences, by asking for feedback with the right questions (e.g. ‘how do you think your users will react?’ rather than ‘what do you think?’). Avoid committee discussion, get feedback individually, otherwise you’ll get design-by-committee which is driven by compromise. Get alpha-male types on board by discussing the design with them separately beforehand, listen to their concerns and show that you’ve given them consideration. Delegates mentioned DFCKR, Dan Brown’s Communicating Design and 5-second test. As always, respect to Carsonified.
  • Mike Daviestalk on web accessibility. Interesting that he came from financial services and managed to persuade his firm that it was a good idea; and in fact that they got more money in the door as a result. David Wilson, development manager at Legal & General ‘got it’, which helped. Discussed the limitations that affect people: sight, sound, cognitive & mobility. Content needs to be Perceivable, Operable, Understandable & Robust. The WAI-ARIA guidelines allow custom web widgets to hook into accessibility interfaces in same way as standard HTML controls. Use the anchor <a> tag for links, not <span> tags with JavaScript click handlers, because the <span> can’t get focus. Button labels should be verbs, not status messages like ‘on’ or ‘off’. If you have all error messages in the HTML on first load, hidden using CSS, screen readers without CSS will read all the errors. Mentioned dotjay. Confirmed that many of the problems that Joe Clark had with WCAG 2.0 have now been addressed.
  • Matt Harris‘ talk on writing WordPress plugins, for those running WordPress instances on their own hosting.
  • Ann McMeekin’s talk on making accessibility sexy – i.e. building accessible sites without compromising on the wow factor. Features that make designs accessible can be good for users without disabilities too. Touched on inspiring designs like knitted walking stick cosies, ramps zig-zagging flights of steps, OXO Good Grips (no mention of arthritis in sales bumf, just what it’s good for), and Braille Playboy. Stewart Butterfield’s 5k site design contest, and things like the space invaders game that people came back with, are pretty inspiring, as well as Jeffrey Zeldman’s reading of why it mattered. Mentioned the scriptingenabled and enabledbydesign site. Not sure how to cater for users with impairments? Ask them, or check out support groups online. Text should be no smaller than 75% – if user wants to fit more text on screen (e.g. tunnel vision) it can be too small to read if they reduce it. Guidance given for line height, focus, logo and button size, making DHTML controls for Flash content (a good example being the accessible YouTube site), use text-transform: uppercase rather than keying the actual HTML content in upper case, so that screen readers don’t spell the text out like an acronym. You can use a colour contrast analyser to check your designs are suitable for people with colour blindness, other sight problems or dyslexia. Delegates mentioned some bad design examples and some free/open source screen readers (NVDA and WebAnywhere), and to indicate required fields, suggested using an image with an alt text of ‘required’, rather than using asterisks which make screen readers say ’star’ each time. Anne can be reached on twitter.
  • Christian Heilmann’s ‘Why web development is running in circles’. We don’t seem to build on lessons learnt before. People keep to the technology they know and like to re-invent the wheel because they don’t always trust other tools/libraries/technology. Also some developers like to become the expert in something and make it opaque to others to avoid being made redundant. Sunday night talk called ‘The art and pain of teaching JavaScript’ discusses the problems of learning JavaScript and how best to produce reusable script components. Hundreds of JavaScript tutorials online, but quality varies so much. Search engines favour older content which is often outdated. Not helped by massive range of people that want to use it (user – tinkerer – implementer – developer). Designer might want a script to copy & paste from somewhere that does fly-out menus or simple form validation for example. Best way to learn? Don’t look at libraries like the Yahoo User Interface library (though that’s very well documented), spry, dojo, mootools or moofx, because they have to run very fast and cope with browser differences; you use these so that you don’t have to care about these things! People should document their JavaScript, and there are tools to help. JSDoc works like JavaDoc by compiling all your code comments into HTML documents, whereas Naturaldocs actually reads your code and tries to write HTML documentation for it (works with other languages too!). Tutorial Builder writes a tutorial based on your JavaScript comments. Things that change should be in configuration objects rather than in your script files, in case you need to release patches. Also provide an API so that people can extend it with their own plugins etc. in a way that won’t break when there are new releases. Extensibility is more important than elegance or compactness, or any elitism that might go with that. When you release code to the community other than stuff that you’re playing with (consider a ’sandbox’ for this), try to be as un-geeky as possible when describing what it’s used for and how to make it work. There’s more kudos in explaining something complex to lay people than releasing another version of a script that’s smaller or more elegant. Sharing code should be more about sharing the joy! :D Other delegates suggested a good list of learning resources, and I stumbled on a ‘top-5′ of popular JavaScript libraries. Christian is contributing JavaScript articles to the Opera Web Standards Curriculum, and can be reached on twitter.
  • Finally there was Simon Wardley’s talk on why ‘open’ matters in moving along the innovation to commoditisation s-curve, and how the software industry is moving from innovation through providing products to providing services/components, which in turn encourages further innovation. If only for the strategic use of lolcats :) There was also a great analogy for service lock-in that I won’t spoil for you in case you’ve not seen the slides. Simon works for Canonical on cloud computing, and on the side is working on electronic books which interact with computers through the use of conductive ink, due to launch 2010.

Some other links flying around I think I’ll have to check out:

Phew!





Macs vs. PCs

24 10 2008

Heh… wonder if I can get a flame war going with that title? :)

I just watched this YouTube video and thought it was funny, and felt compelled to check out the comments to see if there were any amusing ‘macs are so lame’ or ‘PCs suck’ arguments going on. Why? Partly because it seems such an oddly emotive topic – probably the closest I’ll get to how it might feel to support a football team, and partly because I’m a switcher myself, curious to see if many have done the same.

There were quite a few flaccid remarks along the lines I expected, but quite a few reasoned comments as well. Some people mentioned that they liked both, but maybe one more than the other. Some mentioned that Macs are in fact Personal Computers, though I guess most people use the term ‘PC’ these days to refer to machines that ultimately descend from the IBM PC, now offered by a multitude of different companies in different makes and models, and often bundled with Windows.

I like both too, maybe the Mac a bit more than the PC. The main reason I switched to a Mac for my main machine was my experience of Windows Vista. Before I tried a Mac, I upgraded from a single-core laptop (running Windows XP) to a faster dual-core laptop with more RAM to try to improve performance. I figured all those multi-threaded applications I use would be quicker. Getting a new Windows laptop at the time meant getting Vista, and I thought that would be a bonus.

Right from the start though, I noticed how security dialogs would pop up with irritating frequency. They’re part of a Vista feature called User Account Control, designed to stop programs doing anything that could be risky without the user being made aware of it. Mac OS X and Ubuntu have similar dialogs for the times a program asks for elevated privileges (for access to things that can affect the whole system) but it pops up nowhere near as often.

By itself, that would be annoying. There was also, though, the painfully slow response when I tried to use anything. Hearing the fan still whirring away like a jet engine a few minutes after double clicking something with nothing happening on the screen, I’m thinking “what is it doing in there?”. I can only guess where these performance issues have come from. I expect a fair chunk of it was probably down to the indexing service, which gets better over time, as does the frequency of elevation prompts, but I’m wondering if the file and registry virtualisation part of UAC has anything to do with it. Even if this doesn’t impact performance, I found it maddening not really knowing where things were on the file system, as I had problems sometimes with following shortcuts to my own documents giving me ‘Access Denied’ messages. It felt like I’d been betrayed by an old friend; all those years of learning how to work with Windows since 3.1 suddenly seemed to have gone up in smoke.

I guess the problem is that Windows has been too trusting in the past, giving programmers the freedom to do whatever they wanted with the file system and registry, for better or worse. Ideally programs would only change files belonging to the current user, unless they’re doing something that should apply to the whole system. But it was easy for programmers to ignore this, whether through lack of thought or lack of discipline. So many programs have been written for Windows that expect to be able to routinely write or change stuff somewhere in C:\Program Files or %WINDIR% that it’s difficult to allow a new version of Windows to introduce better security while still running these older programs.

There is a way to automatically approve the elevation dialog if it annoys you to the point of insanity, but the user interface way of doing it is only available in Vista Ultimate, and the registry way might be a bit too tecchie for some people. It’s probably not a good idea to disable it, but the problem with security dialogs being too frequent is that it dilutes the message and allows habit to creep in. How can you tell as a user when allowing the access is fine, and when it might cause problems? What if you get into the habit of clicking ‘Allow’ whenever you see it, so that when it actually counts you click ‘Allow’ anyway?

I’d have switched to Ubuntu on the new laptop, as the things it now supports out-of-the-box astounded me compared to other Linux distributions I’ve tried, not to mention the user interface tricks you can do with it, but a lot of software I use is still (unfortunately) only supported natively on Mac OS X or Windows. As it was beforehand I was actually quite happy with Windows XP, and curious about Macs because I hadn’t tried them before. Disillusioned with the direction Windows seemed to be going in, I took the plunge and bought a MacBook Pro.

I was quite surprised how easy it was to work with a Mac having never used one before. Other than the initial small learning curve of getting used to new keyboard shortcuts and menu arrangement (as you’d expect when switching OS anyway), I was quickly impressed with the smooth performance, glossy user interface, the amount and quality of included software (including a music sequencer and full development environment), and the way it just gets out of the way to let you do your thing. What’s more, if you like to use a command line for things, with Mac OS X it’s bash (the Bourne-again Shell), so I immediately felt at home having tinkered with Linux for years.

Whilst Vista also has its glossy Aero UI it seems to run comparitively slowly on similar hardware. Granted, that hardware might cost a fair bit more from Apple, and the pricing in the UK compared to the US is particularly galling. The arguments about the design being much nicer than PCs aren’t necessarily true; at least with a PC you have a lot more choice in that department and firms like Alienware have been turning heads with their designs for a while. PCs have come a long way from the stereotypical beige breezeblock I owned in the early nineties.

There’s also the argument that you have more upgrade options with PCs. I guess for tower PCs this is probably true to an extent, where you can easily upgrade graphics cards, add extra hard disks, add a variety of PCI devices, or even change the processor, though with laptops it’s not the same. Many laptops (Mac and Windows) support ExpressCard devices, and there seems to be a move generally towards USB when adding extras, so maybe there isn’t quite such a big difference any more? More people are using laptops as their main machine these days too, so unless you have exotic devices without Mac-compatible drivers I personally don’t see the upgrade argument as a decider. For one thing, Macs have an impressive resale value so even if you don’t fancy upgrading the hard disc or RAM, you can easily sell it and cover a big chunk of the cost of a newer one.

It’s interesting that Apple hasn’t decided to release OS X for PCs. Sure, Apple would have the extra overhead of supporting a lot of different hardware (though sometimes they have problems with their own hardware :) . Some might say it’s because their kit is too expensive so they have to tie the OS to it to get people to bite, and releasing OS X for other kit would allow direct performance comparisons. I guess you have to bear the Mac Mini in mind here – it’s actually quite cheap for what it is, so this doesn’t quite hold up.

Seems to me that the cost of a Mac is balanced by the combination of good design (Alienware machines are expensive too) and the software you get with it.