Showing posts with label conferences. Show all posts
Showing posts with label conferences. Show all posts

Friday, 19 June 2015

Omnivorous inclusiveness and the closing of the browser parenthesis

In the past I've thought of the web as a convoy of browsers. That turns out to be wrong.

Nowadays (thanks to a long lunch with Paul Downey, Jeni Tennison,  et al) I've begun thinking of the web as a ship of Theseus where, despite replacing every single part of the stack, what's left is still recognisably the web.

This made me realise that we are surrounded by unexamined and ossified metaphors that are in danger of becoming thought-terminating cliches. For example:
- open web versus (presumably) closed web
- the web browser is the web platform is the web
- the web as a platform
- web apps
- web versus native

One of the reasons I present at conferences like OpenTech is because I want to have my mind changed and my complacent metaphors jolted. This year my presentation came out of asking myself "what do I most like about the web?" My initial list was:
- its universality (view source meant everybody everywhere could cut and paste their way to something that sort of worked).
- its omnivorous inclusiveness (it tended to absorb neighbouring or competing technologies like WAIS, Gopher, NNTP and FTP).
- its hypertextuality, intertwingularity and document orientation because they open the door to new forms of argumentation as well as letting us create living documents.
- its peculiar notion of addressability without guarantees about the nature of the resources at the end of the links.

This presentation started out as my oft-repeated but never documented "HTML 3.2 was the last good version of HTML" rant. It channeled some of my distress with the ideas behind HTML 5 and the notion that there is a "web platform" which arbitrarily excludes certain technologies (like Flash and native apps) but includes others (like JavaScript). In its final form it asked if today's open web platform is still the web. Now I have my answer.

That answer is driven by two realisations. Firstly it turns out that browsers are not the only user agent. They're not even the only kind of user agent. Secondly now that deeplinking is becoming mere linking it is clearer than ever that apps are just domain-specific user-agents. As a consequence it becomes clear that native versus web is merely a debate about whether we should use 1 universal user-agent or N domain-specific user-agents.

Since browsers and native apps are merely different kinds of user-agents I think it's a mistake to conflate browsers and the web. I think we run the risk of mistaking the capabilities and roadmap of today's most popular kind of user agent for the capabilities and roadmap of the web. For example user-agents that don't support Javascript or CSS are equally legitimate but less popular constituents of the web. However there's a strong temptation to consider them to be obsolete or lagging members of our convoy and thus leave them behind.

So.

The web has changed, is changing and will keep on changing. The convoy is bigger than I originally thought because there are lots of overlooked user-agents out there. These apps aren't part of the web any more than browsers are but their addressable/linkable content most definitely is part of the web. Just because that content has a preferred user-agent doesn't change this.

Perhaps, like the Gutenberg Parenthesis, there is a 'Browser Parenthesis' that is also closing?



Update: The audio from my OpenTech 2015 talk is now available.

Wednesday, 13 November 2013

SCNA 2013 in memes

What was SCNA 2013 about? Well...the following memes kept coming up.
  • 10 thousand hours
  • Dreyfus model
  • Reasoning by analogy (chess, film making, agriculture)
  • TDD
  • Clojure
  • Code katas
  • Autonomy, purpose and mastery
  • Agile
  • Craftsmanship
  • Design Patterns
  • Javascript
  • Apple Macs
  • Apprenticeship
  • Rails
  • Professionalism
  • Quality
  • Community
  • Family
I also did a little lightning talk in which I tried to get people to change their minds about the Singleton pattern.
 Ceci n'est pas une Singleton

Wednesday, 25 September 2013

Beyond the NASCAR

People in the identity world worry a lot about the NASCAR problem. 

They worry that showing a large set of buttons will hurt conversion rates (because of the paradox of choice) and confuse users who don't remember which IDP (identity provider) they used on a particular site+device combination. 

Stack Overflow NASCAR

I don't think that's a big problem nowadays. 

That's because we're down to a fairly small set of viable identity providers (henceforth known as IDPs). Most of the others are either dead(MyOpenId), new (Amazon Login) or only useful in specific niches (GitHub, Instagram, Tumblr, LinkedIn etc).

If we look at Stack Overflow's data we see that 5 IDPs are used by 98.6% of visitors but everybody has to deal with the cognitive load of choosing between the 12 buttons and 1 form field. 

Reducing the set of buttons to 3 would still give users a choice whilst reducing cognitive load. By cutting down to just these 3 IDPs they'd have covered the vast majority (in Stack Overflow's case 92.02%) of potential users of their site and greatly simplified the experience. 

However if you prioritise providing access for 100% of your users over providing the best possible experience for the majority then you have several alternative strategies available to you:
If your goal is optimising the percentage of users who sign-in and making sure those people get the best possible experience then here's what I suggest:

  • Use Google+ and Facebook buttons (there are also going to be scenarios where Weibo/Renren/VKontakte are appropriate additions). 
  • Then use checkSessionState() and FB.getLoginStatus() to find out if the user is already signed in to Google or Facebook. The mobile SDKs have equivalent APIs.
  • Then suggest whichever account the user is already using by putting that button first and/or making it bigger. 

We've even published a guide to handling the scenario where the user is signed-in to both IDPs and you can automatically bypass the sign-in screen. 

However there's still the situation where a user prefers different IDPs on different machines: for instance if they work in a company that blocks Facebook at the firewall or they prefer Google+ on Android but Facebook on iOS. For those users a naive NASCAR implementation leaves them with one account on your service per IDP. 

The easiest solution to is to ask for the user's email address and use that to correlate all the accounts they use to login to your service. That way the user never has to worry about creating duplicate accounts. Of course this does restrict you to IDPs who can offer a verified email address. 

The only IDP this excludes is Twitter. If you are using Twitter as an IDP then you'll have to either capture (and verify) the user's email address in a post-registration step. 

Favstar.fm asking for email after using Twitter for identity

Sometimes you have to do things the hard way. Usually it's because you have large numbers of accounts with unverified email addresses (for instance if you used a standard OpenID IDP or used Twitter without capturing and verifying email addresses) or you're migrating users from one IDP to another. 

In that case you have to provide a 'connect flow.' This is where the user signs-in to your service with one IDP and you ask them to 'connect' with additional IDPs. Afterwards you know that the same person owns that set of accounts even if they have different email addresses associated with them. 

Connecting accounts on Soundcloud site

The heuristics above mean that the NASCAR anti-pattern doesn't have to harm conversion rates or UX.

If you'd like to learn more about this stuff I'll be attending Over The Air 2013 where I'll be walking people through examples of these heuristics in production and talking about the multi-device multi-platform post-NASCAR future of identity. Join me. 

Sunday, 31 March 2013

Speakerconf 2013

A man, a hat, ... What is Speakerconf? Speakerconf is a small (roughly 16 attendees) invite-only conference where everybody who attends gives a presentation about a topic that's currently on their mind.

Speakerconf 2013 was educational, fun and humbling--all at the same time. It featured a wide range of speakers talking about a wide range of topics. Everything from UX to constraint programming to microservices to model checking to tail-call optimisation in Java 8 got covered.

The breadth and sophistication of the talks means that in every session at least some us were completely befuddled whilst others were making connections across disciplines that don't normally share the same conference let alone the same room. For every talk about computation tree logic that went completely over my head there was a moment when I got to introduce people to the ideas in composing contracts or As We May Think. Many of the other attendees told me they had a similar experience. This resulted in an environment that was unusually conducive to respectful and enlightening conversation.

If you get invited to attend a Speakerconf then I strongly recommend you accept.


Tuesday, 22 December 2009

XPDay UK 2009

For the last few years I've been attending a cosy little community-run conference in the UK called XP Day. This year it was held in Church House which is a stone's throw away from Parliament.

As the slogan on their website says it was "more than XP. More than one day." The "more than XP" part of the slogan resulted in a surprising number of sessions about Lean and Kanban. Since these seem to be replacements for, the increasingly reviled, Scrum it got to the point where there was an open space session asking if we could have XP back.

The conference began with Google's Mark Striebeck giving an interesting keynote on the massive data collection and analysis effort his team is undertaking in order to turn testing "from an art into a science." Unfortunately I was constantly distracted by his usage of the word "art" in contexts where "craft" seemed more suitable. Since the relationship between art, craft and science is important to me, for obvious reasons, I was disappointed to see that Mark didn't give definitions. This meant that I couldn't work out if he'd truly confused craft with art or whether he was just using different definitions to the ones I prefer.

Gojko Adzic had a blog post out with the details of Mark's talk before the applause had died down. My own attempts at using the XP Day Jaiku channel for note-taking eventually faded away due to the sheer number of interesting talks, workshops and open space sessions going on.

This year's conference was heavily focussed on experience reports. Anna Shipman ran a couple of brutally honest and insightful sessions on situations where an Agile adoption goes wrong. There was also a large contingent from 7Digital who shared the difficulties and benefits of adopting Agile in a start-up. This was especially illuminating because their CEO participated in the experience report and gave us the customer's perspective. I especially liked his focus on using Agile as a competitive business advantage rather than merely as a way of fixing broken software processes.

My favourite session was probably Gojko's workshop on Building Software That Matters. It gave a roomful of people a chance to talk about some of my favourite topics: feature partitioning, creating quantifiable feedback loops in the software development process by testing with real users and developers focussing on helping to create value rather than just blindly implementing the requirements they're given.

I hope next year's XP Day is as interesting.

Apprenticeship Patterns at XPDay

Sunday, 6 December 2009

Scalecamp UK 2009



Last week the wonderful people at the Guardian held an unconference called Scalecamp "for and by people who care about web performance and scalability."

Lots of interesting developers and operations people from companies like Yahoo, Nestoria and ThoughtWorks turned up to share their experiences. I found the mingling of sys admins, operations people and architects lead to some interesting discussions and I'm looking forward to attending the next one.

I made notes on the sessions I attended using this Jaiku channel. I'll also be using that channel to track the ongoing discussion and collect links to various people's slides.

Speaking of which, my slides from my session on the scalability staircase are available at : http://docs.google.com/present/view?id=ddkgd7hz_100hhbqgtc6. The basic idea (which came out of a discussion at OSJam last year between me, Dan Cresswell and Manik from JBoss) is that the successful heuristics regarding system architecture change at different scales.

You can see photos from my session and the rest of the event in the Flickr group for Scalecamp.

Open Sourcerer