Simple Labels for HTML5 Slider (Input Type = Range)

For a favicon tool I’m working on, I tried using an HTML5 slider for the first time and was surprised to learn there’s no labels. Looked at a couple of shims out there, but they are just shims and don’t include labels either. So d-i-y …

The slider looks as below, and the CSS doesn’t make any assumptions about length of the slider or the two labels.

The labels are generated using the old margin 50% wrapper trick, as you can see in the following Jade markup and Stylus CSS:

input.rangeOption(type="range",min="0",max="1",step="0.1",title="Transparency: 0 to 1")
  .labels
    .minLabel
      span solid
    .maxLabel
      span transparent

  1. .rangeOption
  2.   float left
  3.   margin-left 2em
  4.   input
  5.     display block
  6.   .minLabel
  7.     float left
  8.     span
  9.       margin-left -50%
  10.   .maxLabel
  11.     float right
  12.     span
  13.       margin-left 50%

Google Plus: The Good and the Bad

I’m on Google+ and I’ve mostly found it pretty decent in the ~2.5 weeks I’ve been using it. (Also had an opportunity to do dogfood before it went live, but really, it’s a different world once it’s out there and being used for real, so that’s what this post is about.)

Thought I’d sum up my experiences to date. You’ll notice a lot of my comments compare it to Twitter, because after all the crowd has been similar so far. And honestly, I often find myself with something to write and having to decide whether to stick it on T, G, or both. The decision feels kind of arbitrary right now and will probably shift to G over time, unless Twitter gets its innovation seriously on …

The Good

Things to like about Google Plus …

  • The UI! I’ll call out the design first because it’s not been Google’s strong point in recent years. Yes, clean white pages were a breath of fresh air in 1997, but getting long in the tooth now, and Google Plus shows Google’s now getting serious about visual design, and beyond just statistical hue calibration.
  • Engagement. The overall experience leads to much higher engagement than I’ve seen with blogging, twitter, or anything else. For the big guys, you see literally dozens of comments in the first few minutes.
  • No size limit. You don’t have Twitter’s 140 character limit. Fortunately, Twitter taught us the benefits of brevity, so it’s very acceptable to write just a sentence or two. But you can still go all out with an entire paragraph and that’s fine too. And no more shoehorning txt,just 2fit the arbtrary char limit.
  • Comments. Compared to Twitter, I actually have all responses to my status in one place. On Twitter, there’s no UI to see all the responses to a tweet; you have to view them all individually. The comments also facilitate a conversation, whereas on Twitter, you’d end up with multiple tweets and no decent UI (save third parties perhaps) to view the whole conversation.
  • Mentions. Similar to Twitter @ mentions, but because of the comments, + mentions have more of a feel of being summoned into a conversation. It’s certainly easier to get the entire context of the conversation in which you’ve been mentioned.
  • Search. <rant> Seriously a shambles about Twitter is the inability to search through tweets. I can’t even search my own tweets!!! This was one of my initial motivations for using posterous, figuring I’d pipe everything through it. And same reasons others use identica, etc. The problem is you don’t get all the clients, e.g. Tweetdeck. So I ended up sending a lot of tweets which I can’t actually search through. They fall off Google and they fall off Twitter’s own search. It has constantly amazed me that a company in constant search for a revenue stream doesn’t have a full history of content available.</rant> Now, with Google Plus, there’s no search either, but at least advanced users have the option to search using site:plus.google.com. And in all likelihood, we can assume Plus will have search too. (Although Android search shows Google + Search is not a foregone conclusion of excellence…but Plus’s virtues to date promise good things.)
  • Hangouts. I think the concept of video hangouts is immense, as opposed to just standard VC, and will be a great asset for remote teams. (I know some teams already just keep an open skype session running all day.) However, I’m speaking out of my speculatum because I haven’t yet tried it, for reasons explained below.
  • Updates. The team is doing a great job of engaging with the community, listening to the feedback, and making updates. They’re doing a great job if the worst controversy is closing down accounts of sophisticated tech companies blatantly flouting the rules by setting up corporate accounts, complete with filling in their first name, surname, and gender.
  • Android App. A fine production.

The Bad

Things not to like about Google Plus, keeping in mind it’s still in “field testing mode” (“beta” is so web 2.0) …

  • Circle statuses aren’t public. The problem is I want my Twitter-like geeky status updates to be public, but not contaminate the streams of my non-geek friends and family. There’s no good solution for this right now. If I publish a geeky status update to my “webdev” people, they will get to see it, but it won’t be public. If I publish it to “Public”, everyone in my circles sees it. Right now, I’m opting for “Public”, and if others are doing likewise, their non-geek friends and family will freak out the first time they join Plus and run fast in the opposite direction.
  • No groups. A lot has been said about whether circles themselves are a good idea, given that people’s relationships are nuanced and dynamic. But what interests me more than circles is groups. I’m really hoping Google somehow merges Google Groups with Plus; private groups would be particularly powerful for workgroups. The cool thing about groups, like what Facebook has but few people use is: (a) compared to circles, the visibility model is easily understood and predictable – someone can see messages if they’re in the group and can’t see them if they’re outside the group…simples! (b) you don’t have 100 people all adding the other 99 to the same circle and all micromanaging their circles to stay in sync – the owner just adds everyone once…this saves a lot of hassle, it works better for mainstream users who can’t or won’t micromanage circles, and ends up with a single source of truth.
  • Comments UI. As I mentioned on + Comments UI works for the average Joe with a handful of comments. But for Scoble etc, they are reedeeculous! 100+ comments in an hour? With no threading. It’s a mess to read and removes much of the incentive to post anything. This stuff is write-only. Since comments are +1able, G+ should let the popular ones float to the top, or perhaps display them with the others being collapsed. There are some other good suggestions in the comments to the aforementioned + post.
  • Comments and Sharing. The problem with sharing is people will comment on the sharer, not the original. I think it makes sense for everyone to be commenting in the same space, or at least for some easy summary view. I think this is Google being initially biasing towards privacy measures to avoid adverse reaction, but it does lead to comments being even harder to follow.
  • Finding hangouts. I can’t. Maybe that will change now that PlusRoulette is here! Or not. I also hope Google adds the ability to record hangouts at some stage. Lightweight video podcast ftw!
  • No metadata. I get it. Statuses don’t have titles or keywords or anything else because people are lazy and sites that don’t realise that won’t go mainstream. So Google’s being smart here. But that said, for my own use case, there are times when I’d love the ability to tag a post with “announcement” or whatever, so I can later have a feed of those. Anyway, I guess one can work around it by including some hashtag-like token in the actual status. Just making that point, though I realise my own use case is not that which Google is targeting – it seems the lesson has been learnt from Wave et al that Googlers and assorted geeks shouldn’t always be the target audience.

Okay, that’s me done. I’m enjoying Plus and I’m hoping it spurs Twitter and others to build on the awesome. Are you using it? Any other goods and bads?

Update: conversation on Plus

Best Practices for Mailing List Unsubscription

Having spent the past too many hours gearing up for inbox zero or some such, I’m pleased to say almost every mailing list now includes an “unsubscribe” links (even those which I never signed up to! Which I avoided clicking on as they are probably a dodgy way to get you somewhere else). I assume this is some requirement of Spamhaus etc which the lists must follow to avoid falling in the spam folder, which affects their spam status in GMail etc. Also, if lists make it hard to unsubscribe, users will mark them as spam, which is also detrimental to their status on GMail etc.

After hitting “unsubscribe” many times, here’s what works well (of course, this is just from the perspective of an interested user):

  • While most let me unsubscribe immediately, some require login. This is a bad move as I assume many users simply won’t bother, especially if it’s some list you signed up to years ago. Interestingly, those which unsubscribe immediately fall into different categories – some are off-site, so you can only unsubscribe. Others are onsite and once you unsubscribe, you’re also logged in, which is possibly a security risk (maybe a reasonable one, but I don’t think they’ve always considered this happens). In a few cases (e.g. LinkedIn I think), you can unsubscribe, but then you have to log in after that. A fine example of the awesome Amazon-style “semi-logged in” state.
  • A good practice is to provide settings for what you want to receive. But not too many options! LinkedIn is particularly verbose with its new group feature – turns out each group has its own mail settings – a handful of checkboxes for every group. Just say no!
  • Some have a delay of up to three days, which is not just an annoyance, but breaks the UX principle of immediate feedback. You unsubscribe, then you see a new mail a few hours later and think maybe you didn’t unsubscribe after all.
  • Automatic Unsubscribe is best, but as with all “shoot first, ask later” style interfaces (e.g. Auto-Save), you also want to provide an “Undo” facility. One list did that, with a “Did you really mean to Unsubscribe? Resubscribe“. Smart.
  • Some said “We’re sorry to see you go” etc, but a smarter thing I saw was “You can still keep in touch with us on Twitter and Facebook“.

I, Xoogler

googleplex

I am now ex-Google. In this post, I’ll reflect on my time as a HTML5/Chrome Developer Advocate at Google, why I decided to move on, and what I’ll be doing next. In a follow-up post, I’ll do a bit of a roundup of my main activities while at Google. This is a long one as other priorities meant I didn’t get around to blogging much about Google while I was actually there!

Where to next? Nowhere, of a sort. I’m staying right here in London and not jumping to any company at this time. I have a ton of itches to scratch, so I’m looking forward to doing some hacking and building apps. I’ll be drinking the HTML5 kool-aid I’ve dished out in ample quantities.

Life at Google

I joined Google in April, 2010, and it really is an amazing place to be. I’ve worked in a lot of different environments, from startups to SMEs, to large enterprises, and across several industry sectors…and Google really does stand out as uniquely awesome, for the following reasons:

  • The people. Of course, you always hear about all the industry rockstars, but the remarkable thing is those conspicuous by their absence. If you’ve worked in a big company, you’ll know what I’m talking about. There’s always that guy (or girl). Only one of them if you’re lucky, but one is all it takes to doom projects and drive away talent. That guy (or girl), who might not even be a developer and might not even work in your department, but will still be there to do silly things and block all manner of progress, maybe in the name of mortgage-driven development or maybe because they have a solid theory about sticking beans in their nose. The absence of those people from Google is the really noticeable difference, not the rockstars. (Rockstars are not exclusive to Google after all.) To quote Joe Kraus from In the Plex, “There were no bozos”. But more than that, the baseline is set high and defended wide.

    Having conducted numerous job interviews, I saw first-hand how the company is relentless in maintaining its quality threshold; from my observations Google takes a “talent collector” attitude. It’s patient and would rather accumulate a talent pool over time than make any compromises. Every company likes to pay “people are our best asset” lip service, but Google takes it really, really seriously.

    Most importantly, we’re not just talking about technical ability, but a company culture of helpfulness and enthusiasm, and this includes non-engineering functions too. Certainly people are busy, so they won’t always go along with your plan…but when there is inaction, it’s not borne of malice but resource constraints. It’s not the zero-sum, cut-throat, mentality you sometimes see in mature industries, where there’s an expectation that one worker’s promotion is another’s stagnation.

  • The ambition. In a previous role, a phrase I heard constantly was “we’re not trying to boil the ocean”. This was a valid way of keeping things real, but also a good way to progressively evaporate the dreamer in each of us. In contrast, “boiling the ocean” is etched into Google’s DNA. Google+ is the latest example, another is Chrome, the product I worked most closely with, another is Android, etc.
  • The openness. Internally, Google is incredibly open about upcoming projects and company strategy generally. It has both the culture and the technology to pull this off. Culture-wise, there’s an attitude that people should be free to test and even work with other projects; as Dion once pointed out, openness is the real genius behind 20% time and the part many companies miss when they pontificate about “driving innovation” and “inspiring creativity”. Using Buzz internally was tremendously rewarding; companies who have used tools like Yammer can probably relate, though I think Buzz is more amenable to these kinds of conversations (lacking 140-char limits and supporting comments against status updates).
  • FOOD! And the massages, etc. But especially the food! “Free” is not actually the main benefit. It’s simply the option to go grab a healthy (or less healthy, but the point is that you have a choice) meal quickly with your colleagues. That it’s at work means it’s convenient and that it’s free means there’s no counting or payment process to slow things down. Not that it hurts the bottom line either :).

So why would I leave all that? I’ll explain more further down …

Life in Developer Relations

I’m proud and fortunate to have have been part of Google’s ever-growing Developer Relations organisation. Here’s Don Dodge’s description of the team: “Thirteen of them have authored books, at least four of them have software patents to their name, and most of them have made significant contributions to Open Source projects. Several others have contributed to industry standards, and sit on standards boards.”

Working in developer relations gave me a chance to be paid to do things I’d done in my spare time: participate in conferences, blog, play with interesting new tech, etc. It let me meet and be inspired by many developers around the world. And it also gave me a chance to reflect on the growing discipline of developer relations and the broader topic of Developer Experience.

speaking

Overall, companies are realising that if they want to provide APIs and platforms, it takes more than a marketing department to win developers over and support them in their efforts. Microsoft has been a pioneer here with its “Developers, Developers, Developers” mantra (there was actually a profound point in there!) and Apple too with its evangelists; but Google has more recently played a key role in grounding this role more on the engineering side and framing the role as an “advocate” of the external developer rather than an evangelist of the platform.

Life in HTML5 and Chrome

The growth of HTML5 and Chrome have both been astounding in the time I’ve been working in this role. (Naturally I accept full, unconditional, personal responsibility.) We saw Chrome jump from 70M actives to 160M between IO 2010 and IO 2011. And the web feels like a different place.

The APIs we now enjoy as web developers are plentiful and continue en masse – CSS3, WebGL, IndexedDB all in several major browsers. Installable web apps. Mobile HTML5 en masse. At the same time, it’s not a foregone conclusion that “the web has won”. There’s the risk of fragmentation as browsers plow ahead with different features. It’s being handled nicely through stnadards process, but the risk is always there. And while there’s not much life in desktop platforms, the native mobile platforms are rolling along very nicely, thankyou very much. Mobile HTML5 has come a long way, but the gap remains.

Just as interesting, the fundamental development platform has shifted. We’re seeing an excellent shift towards a superior developer experience. The HTML/CSS/JS trio is becoming HTML++/CSS++/JS++ through a new breed of language enhancements which don’t so much replace them as augment them. Sugar … it’s sweet! Jade/Stylus/CoffeeScript is the stack preferred by the exciting new SocketStream framework and will continue to flourish until the browsers themselves start to simplify things, through intiatives like JS.Next.

And then there’s the Nodequake …

5ive

Life After Google

There’s a lot of logical career moves from here, but since life is short, logic is overrated. The main reason I decided to move on is I have a massive urge to do some dedicated hacking time. There are apps in my head, they need to come out.

I was certainly able to have some fun coding while at Google, with some bite-size apps even being used in production.

But I was at a fork in the road. I’d be struggling to cultivate a serious app, with a serious server side and serious users, in 20% time. Yes, 20% time really does exist and I saw some people achieve good things with it. But 20% is an upper bound, and for the kind of apps I want to be working on, I’ll want to be spending 120% time on them to get them going. Also, some apps I want to make would be seen as downright mundane, or quirky to the point of weird, but are still apps that I want to transplant from my head to my web server. If for no other reason than I want to use them myself.

From a technology perspective, I really want into Node too. I’ve been dreaming about server-side JavaScript for a long time and looking forward to using it in anger now that Node took it mainstream.

My immediate goal, though, is to fix up a few existing sites, e.g. make WebWait mobile-friendly and make ListOfTweets cleaner, persistent, and social. I have a few apps on similar scale in mind beyond that, and can’t wait to make them happen! Of course, I’ll be happy to get feedback, so please let me know if you want early access. Of course, stay tuned on this blog for more info.

And Thanks

Thanks go to my colleagues, partner companies, and the developer communities I’ve been able to work with throughout my time at Google, as well as those who invited me to apply for a role I didn’t really know existed (you know who you are!). Please keep in touch.

And thanks for reading. As mentioned above, I’ll write up a roundup of my time at Google in a followup post.

(This post is slightly late; my final week was the week before last. But a few hours after handing over my card and a big pile of tech on that Friday afternoon, I was bound for the excellent south coast of Turkey, where limited bandwidth and way too much sunshine prevented me from mentioning this earlier.)