Tiny fractions of Bitcoin have real value, but itâs maddening to use minuscule numbers. We need a better way.
There is a longstanding problem with the Bitcoinâs user experience, and itâs a problem that grows along with Bitcoinâs price. Luckily, itâs easily solvable.
This UX issue has nothing to do with user-interface or interaction design, but is instead typographical in nature â it involves the format by which amounts of Bitcon are typically expressed.
Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
â Live Streamingâ Interactive Chatâ Private Showsâ HD Qualityâ Free Actions
Free to watch ⢠No registration required ⢠HD streaming
I hereby take my stand against the use of huge body text in online articles, particularly on magazine-type sites that presumably want to foster a comfortable reading experience.
Now, the examples below are from desktop websites. I realize these days people basically only care about mobile. But I have also come across the too-big text problem on mobile sites, and I do think consideration should still be shown for the needs of desktop users, of whom there are still many â for example, people goofing off at their work computers.
So how big is bad? Well, as Potter Stewart said of obscenity, I know it when I see it. Consider this example from Bloomberg Businessweek. (Apologies for Tumblrâs inability to use high-res inline images. Click images for full-sized screenshots.)
I deem this text to be Too Big. Here, the browser is as large as I can make it without taking it full screen. Note the difference in scale between the UI elements on the screen, like the menu bar items, and the articleâs text. Also, note that my screen is not at its default resolution here â itâs a Macbook Pro 13âł with its display scaled to simulate a higher resolution, so the problem is even worse at the default screen resolution.Â
For a worst-case scenario, how does the layout look on, say, one of those little 12-inch Macbooks, with a screen size of 1152 x 720 points? Something like this:Â
Thatâs just crazy! Not even one entire paragraph is visible. Is that really a nice way to read on the web? And itâs even worse where articles are broken up with lots of ads and such. (The body copy uses the font Publico at 22px, if youâre wondering.)
I think some designers might do this because they think huge text enhances readability and creates a certain modern aesthetic. They might also reason that on the Web, as opposed to print, since there is no "budget" as far as the area taken up by written content, they should take advantage of this freedom afforded by electronic media.
I would guess that another reason is that layouts are concocted on some web designerâs gigantic 27- or 32-inch display, where the large text might seem to look pretty good.
But on the typical userâs smallish laptop display, layouts with a huge font size look like they came straight out of a Readerâs Digest large-print edition (Remember those? Ask your grandpa!). This detracts from readability, because the reader needs to scroll constantly as he or she reads it.
Designers typically use fancy Macs with nice trackpads and Magic Mouses that enable cool "inertia scrollingâ gestures that let you scroll vast distances with a quick flick of the fingers. They thus may be oblivious to the agony of people using old Windows machines, many of whom, to scroll content, have to fiddle with ancient mouse wheels, or even (the horror!) click and drag on scroll bars.Â
And readers often scan articles rather than actually reading them. With so little content on the screen at a time, scanning becomes a chore.
Finally, for some purely subjective commentary, I just donât like it! It feels less comfortable to read something that uses text so grotesquely big and out of proportion with everything else on my computer's display.
When you read a well-designed print magazine like the New Yorker, are the articles set in giant text? No, and thatâs not because theyâre trying to save money on paper (or at least not only because of that). Itâs because print designers, building upon hundreds of years of tradition, know what sorts of layouts are most pleasing to read.Â
For contrast, see this example from the good old New York Times, using Georgia at 17px in this example (here, we're back at my scaled-up 13" display resolution):Â
Much better! To quantify the difference, 218 words of article text are visible in this NYT article versus only 154 words on the huge-text Businessweek article in a window of the same size, even though the NYT has an annoying banner obscuring the bottom of the page.Â
Hereâs an example from the New Yorker:Â
Also good! Here, 248 words are visible (again, versus only 154 words for Businessweek). The font size is a little bigger, but still not too big, and the generous column width lets more of the article fit in the viewable area.
Note that the article text in the preceding two examples does not seem wildly out of scale with the UI elements on the screen â in fact, that would be my rule of thumb for sizing body text: it should have some reasonable connection to the scale of other content on a typical userâs display such as email messages, UI labels, and typical web content, such as Google search results. Your article text can be larger than these things, but not too much larger.Â
The New York Times and New Yorker are published by not-stupid people who pay lots of money to really good designers to make their content readable. Designers of the world, follow their example!
On Quora, I wrote an answer to this question: âWhat do you think is the key difference between About Face by Cooper, Design Sprint by Jake Knapp, and Lean UX by Jeff Gothelf regarding user research?â
Compared to those other books, I would say that About Face outlines a more monolithic approach to UX design in general and to user research in particular. By that I mean that Cooper prescribes a rather elaborate process for designing a product, including stakeholder interviews, competitive and industry research, and âethnographicâ research (including going onsite with prospective users and observing their day-to-day activities), and user interviews. All of this takes place in an introductory phase of a larger design process that can be seen as a long pipeline that culminates in the delivery of detailed design documents to a development team, which the designers will support as development proceeds.
In contrast, both Lean UX and Design Sprint envision shorter cycles of design, experiment, test, feedback, and iteration â in the parlance of Lean UX, the build-measure-learn loop.
Have you heard that weâre going to get some new emojis in 2017? Emoji 5.0 adds 56 new symbols, including nine brand-new smileys like Exploding Head and Face With Monocle. The following examples are from Google's Android O implementation:
Yet still left unremedied is a glaring omission in the standard smiley set â tears of happiness. I donât mean the message conveyed by the existing uproarious-laughter emoji â đâ but rather a sort of sentimental, overcome-with-emotion kind of happy crying:
I posit that this is a pretty basic and well-recognized emotional state that people would readily express through the means of emoji. I mean, it would sure be more useful than, say, âlaughing & sweatingâ (đ ) and âweird clown faceâ (đ¤Ą), am I right?
And so Iâve mocked up what said smiley might look like in various styles.
A typical use case follows:
There actually is an official procedure for submitting emoji suggestions to the Unicode Consortium, but it seems pretty involved, so Iâm just sort of putting this idea out into the universe with this blog post instead. Youâre welcome!
The Magic Mouse 2â˛s awkard charging stance has become a symbol of Appleâs supposed loss of design mojo. This post from my LinkedIn timeline expresses a typical sentiment:
âSee, the mouse is useless when youâre charging it,â say the critics. âIf only theyâd thought to put the charging port at the end of the mouse, so it could work like a regular wired mouse while itâs charging! Plus, this just looks dumb.â
In fact, Iâd say that Appleâs solution here is a pretty good one, and hereâs why:Â
If you could use this mouse while it was plugged in, a lot of people would use it that way permanently, or at least a lot more than necessary â they would always leave it plugged in, similarly to how laptops are often plugged in whenever they're used. Many of these users might not even realize the mouse is wireless and assume that it always had to be plugged in.
This would degrade the overall experience by turning a wireless mouse into a wired mouse. In fact, it would be even worse than a normal wired mouse, because Lightning cables are stiffer and bulkier than a typical mouse cord, which is lighter and more flexible. What's more, the Lightning cable might be longer or shorter than the optimal length for a mouse cord.
It seems better to make charging the mouse and using it mutually exclusive activities. You use the mouse unplugged, canât use it when itâs charging, and thatâs that. (All this assumes the necessity of a wire for charging â presumably, wireless charging will soon be a viable option for things like this.)Â
Obviously, Appleâs solution can be inconvenient if the battery happens to run out completely while youâre using the mouse. Iâm guessing that in practice, though, this doesnât amount to much of a hardship. The user is presumably given plenty of warning in macOS when the mouseâs battery is running low. Charging the mouse doesnât take very long, and the charge is supposed to last as long as a couple of months.Â
Iâm not saying that Apple has necessarily hit upon the best possible solution here, but I donât think the critics of this design have put forward a better one.Â
UPDATE: I made these same points in a Quora answer, and someone named Skye Williamson added this as a comment: "Haha. I do some light IT for the office I work in, and a while back I unplugged someoneâs Magic Keyboard 2 at the Lightning port, and they were like, âwhat are you doing?!â to which I replied, âthis keyboard is wirelessâ â they just stared back at me blankly, they had no idea. So yes, people would very much do that with their mice too, not knowing it was meant to be wireless at all in some cases."
Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
â Live Streamingâ Interactive Chatâ Private Showsâ HD Qualityâ Free Actions
Free to watch ⢠No registration required ⢠HD streaming
In olden times, when you were looking at a web page in a browser, youâd always see the full URL in the address bar above it â at least, as much as would fit. In most browsers, this is still the case.
But if youâre using Safari for iOS or Mac, it shows only the domain name, leaving off anything to the right, such a path and filename. You can only see whatâs to the right of the domain name when you tap (or click) on the address bar in order to bring it into editing mode.
Here, Iâll argue that this is a bad thing.
(Thankfully, you can, at least for now, optionally set Safari for Mac to show full web addresses.)Â
Apple introduced this URL-truncating behavior with iOS 7 along with a dramatic redesign of the OS. Safari for Mac followed a year later with Yosemite. (Update: apparently Chrome on Android does this too.)
The philosophy behind many of those design changes was to remove extraneous or decorative elements, leaving only the bare essentials of the interface. In some cases, UI elements disappear from the screen completely in order to give content the sole focus.
Many of these changes have arguably been detrimental to iOSâs usability, and have been widely debated and discussed elsewhere. Here, Iâll focus on the URL issue.
Iâm not sure if Apple has ever bothered to articulate the rationale behind this change, but if they did, it would probably sound something like this: In the context of the address bar, the domain name itself (e.g. example.com) is a concise way to help the user identify the site. Itâs a cue that tells the user that the full web address is there and can be conjured up if tapped/clicked and then copied, edited, whatever. But the path, filename, query string, and whatever else can appear after â.com/â is technical, noisy, and often meaningless and normally thereâs no reason for it to be visible to the user. Therefore, showing the entire URL is against Appleâs ethos of hiding technical details from users (and it could even compromise security).
So whatâs wrong with this line of reasoning?
Thereâs usually useful information to the right of the domain name, and there are good reasons it should be visible even when the user hasnât given focus to the address bar.Â
At the most basic level, when full addresses display, you know immediately whether you are on the siteâs home page. If you only see a domain name, youâre at the main page. But the rest of the URL can also provide more fine-grained information about where you are.
To be sure, some web addresses contain unhelpful gibberish â for example, you used to come across a lot of articles with URLs like this:
news.com.com/2100-1083_3-5138072.html
But for reasons of human-readability and search engine optimization, most modern sites and content management systems these days generate more meaningful URLs that are easier for human beings to parse.
Itâs clear which URLs refer to articles or blog posts (the inclusion of a date is a big hint) and which point to other sorts of pages. And these addresses convey not only information about the content of particular pages, but about the information architecture of the website. For example, the first freakonomics.com link tells you that youâre looking at a page about a book called Superfreakonomics, but also suggests that youâre in a books section that presumably contains other pages about books.
This is not to say that users scrutinize every URL they come across â most are undoubtedly mostly ignored most of the time (although Iâd argue that when itâs visible, the user unconsciously scans its information). And a page layout will surely give you cues that tell you what sort of page you are on and where you are in the siteâs hierarchy if itâs designed well.
Unfortunately â this might come as a shock â not all websites are designed well. Many donât give you a good indication of where you are. And especially on blogs, it can be unclear â especially in the above-the-fold portion of the page â whether you are on an individual post, the home page, or on a page showing all posts of a tag or category. With a full URL, this information is clear at a glance.
And even for sites that are thoughtfully designed, they all are done a little differently, and so it takes some extra cognitive effort to interpret a particular layout and its navigation cues. But thereâs always a URL, and it acts as a concise but information-dense indicator of where you are and what sort of a page youâre on.
On iOS, Safariâs URL-hiding can be particularly annoying. Consider that on a cellular connection, data speeds can be quite slow, particularly if you have spotty coverage (i.e. you use T-Mobile). Say you launch Safari and it immediately begins to reload whatever is in the frontmost tab, which in this case says âfacebook.com.â While itâs loading, the page is totally blank.
âItâs taking a long time to load, but when it does, I will see all of the delightful things that have been posted to my news feed!â
Oops, it was just a leftover tab from when I used Facebook to log in to a different site! Cue sad trumpet.
For this reason, Iâm often faced with the decision of whether to tap on the URL in mobile Safari to make sure Iâm going where I think Iâm going, or just wait, taking the risk that Iâm wasting time loading a page I donât want to see. This unnecessarily introduces a situation where the user doesnât know whatâs going on, which is never a great thing in a UI. Â
In short, full URLs are concise, human-readable, metadata-rich info-nuggets, and there are plenty of good reasons not to hide the portion that often has the most useful information. I realize that this train has long left the station, but I remain a proud UI reactionary. Long live the URL!
P.S.Designers looking to mitigate the domain-name-only problem might wish to consider the example of the New York Times blogs, where some important information is placed in off to the left, not the right, in subdomains that are always visible in the address bar. It doesnât solve the problem completely, but itâs a way to add some higher-level navigational landmarks to the address bar. (Unfortunately, mobile users are still redirected to a generic mobile.nytimes.com domain name.)
Iâm not sure what the rationale of that construction is, as it has been the convention for NYT blogs since before iOS 7 was a thing. SEO probably had something to do with it, but I wonder whether they were also thinking about the UX of typing URLs. For instance, if you want to read Mark Bittmanâs blog, you can just start typing âbittmanâ in the address bar, and, if youâve visited before, the rest of the URL autofills, and then you only need to hit Enter.
P.P.S. For more on the UX of URLs, see this Jakob Nielsen piece from all the way back in 1999. The principles of good URL construction still apply. Fun fact: according to an eye-tracking study, âpeople spend 24% of their gaze time looking at the URLs in the search results.â I wouldnât be surprised if this were still true.
The article contains this interesting passage: âIt is likely that domain names only have 3-5 years left as a major way of finding sites on the Web. In the long term, it is not appropriate to require unique words to identify every single entity in the world. That's not how human language works.â Nielsen was on the right track â Google and social media have made the act of typing in URLs a much rarer occurrence. Yet Nielsenâs prediction of the emergence of a superior addressing system has not come to pass.
Generally, if a piece of tech gets the job done reasonably well, it doesnât change; change grows up around and on top of it. URLs, like TCP/IP and UNIX, are part of the lizard brain of the Internet.
I once worked in the interactive department of a PR firm. We made websites for big companies. Our department employed two full-time proofreaders. At multiple points during a web project, every page of the website would be printed out and anything made of words was checked â body copy, menu items, alerts, labels, tag lines, subheads, pull quotes, you name it. The proofreaders were very good, and they always found a surprising number of errors.
At another time, I was a volunteer on a small political campaign. Iâd written a press release that was checked and ready to go, but at the last second, the candidate added one line and sent it off himself. In that one sentence, he misspelled his opponentâs name. It made us look stupid, and he was embarrassed.
Iâve been a staffer at two magazines, and at both, we went through multiple rounds of proofreading before sending an issue to the printer. Editorial staffers at all levels took part. A single piece of copy might have been checked a half-dozen times before going to press. Mistakes â sometimes bad ones â would still go out, but tons more were prevented.
I often see grammatical mistakes, stylistic errors, and just plain typos in well-known applications like GrubHubâs in the above example. In one company where I worked, the name of our company was spelled two different ways throughout our products and company website. If your product has errors and inconsistencies like that, it seems junky and amateurish.
With whatâs happened to the publishing industry in the past decade or so, there are a lot of underemployed proofreaders and copy editors out there. Use them! And if you canât, at least establish a style guide and a process where multiple sets of eyes check every piece of language before it goes out the door. You (hopefully) QA your software; QA the words, too!
P.S. The error from that GrubHub image that jumped out at me and inspired this post was the circled portion, where âletâsâ should have been âlets.â But an eagle-eyed proofreader would notice a few more things:
The logo says âgrubHub,â while the headline says âGrubHub.â Which is it?
The text field placeholders are capped up (âEnter An Addressâ), but the labels (âWhere are you?â)Â arenât. Is that what you want? Even if it is, âAnâ should be capped down regardless.
To be consistent with the placeholder in the second text field, something like âStreet addressâ would work better in the first.Â
P.P.S. Why is the UI of the GrubHub app still scaled up from the iPhone 5âs resolution? The 6 has been out for a year, people!
My post on LinkedIn's use of dark patterns garnered a few comments on Reddit, and a couple of negative remarks there prompted me to write this update.Â
Here are the comments in their entirety. The first: Â
What? I didn't want to add all my gmail contacts! Better just fill out these forms, click through these screens, and hope this does what I wanted to do!
I think this is just a mix of LinkedIN's [sic] terrible metric-driven design and this guy being a moron.
And the second:Â
I hate IinkedIn [sic]Â for the shady practices of maintaining hidden profiles for unregistered people and it's the main reason I'm not a member.
However, there are so many clues throughout those steps that you're not simply inviting one person that it comes across as a little contrived.
Why anyone would give over their email account password to ANY site is beyond me.
I expected this sort of response so I suppose it's worth addressing these points, which boil down to:
It was my own fault for being stupid
In particular, I was stupid for putting in my Gmail credentials when LinkedIn requested them
It's never a good idea to dismiss the consequences of bad design as the result of the user's stupidity. And in this case, as I argued before, the design isn't just bad, but is intentionally misleading, as both commenters seem to acknowledge.Â
LinkedIn is a publicly traded company with revenue of $1.5 billion in 2013. You'd expect some baseline of good behavior from such a grown-up service. I certainly didn't expect it to employ dark patterns in an effort to spam my contact list. Maybe I should have, but LinkedInâs bad faith was the point of my post.
The fact that I didn't expect it explains why I could blithely "fill out these forms, click through these screens, and hope this does what I wanted to do," which commenter #1 finds moronic, commenter #2 "contrived." Trust me, it's a different experience to actually go through the screens trying to perform a task than to read an analysis of the process after the fact. Whatâs more, well, yeah! Of course I âclicked through these screens,â thinking the things I expected to happen would happen! Thatâs the point of a UI, fool! I should be able to go about my business using established services like LinkedIn without always worrying that someone hiding behind a tree will dart out and punch me in the face.Â
But wasnât it dumb to put my Gmail credentials into LinkedIn? Well of course it was! That became obvious as soon as I realized that my contact list had been spammed. But my experience is utterly typical â as evidenced by the class-action lawsuit and numerous complaints on LinkedIn's help boards.
I had qualms about granting access to my Gmail, but it seemed like the quickest way to move forward, and I assumed it would be easy to skip over anything that could get hairy â in short, I was assuming a minimal level of good faith on LinkedInâs part.Â
A cautious user might always deny Account Aâs request for access to Account B, the rule commenter #2 seems to advocate. But the idea that I violated some basic rule of internet hygiene by putting in my Gmail credentials is spurious.
In fact, it's a common practice to grant one service access to one's account on another service. For instance, my accounts on Spotify and Quora have access to my Facebook account. I put my bank and credit card credentials into Mint. You know why? Because integrating those services is useful, and they are trustworthy enough not to do anything horrifying with the access I've given them.
And aren't there obvious reasons why giving LinkedIn access to your email contacts could be a good thing? It's a frickin' professional networking service! It doesn't take much imagination to see why you might actually want LinkedIn to know who your email contacts are in order to help you decide who to "connect" with â if only you could trust it.
It will spam everyone you know using one weird trick
I recently was fooled by LinkedIn into bombarding most of my Gmail contacts with invitations to "connect." Or, more accurately, LinkedIn spammed my Gmail contacts by way of its confusing, deceitful design.
Am I letting myself off the hook too easily for not paying close enough attention to what I was doing? I readily acknowledge that I should have been more careful, but my experience was not unique: the same practices that hoodwinked me are the subject of a class-action lawsuit recently green-lighted by a federal judge.
In fact, I'd argue that much of LinkedIn's viral growth is due to the evil UX methods I describe below.Â
The troubles began when I decided that I wanted to send a LinkedIn invitation to one person who was not already a member. Again, I only wanted to send one invitation to one e-mail address. Sounds easy, right?Â
Well, how would one go about doing such a thing?Â
On the right side of the top bar I saw what looked like a good bet for adding a contact: an iconified person with a "plus" sign floating helpfully above the shoulder.
Â
Clicking there brought me to this page:
Â
Â
And here is where we grant LinkedIn access to our Google account so that... Wait, what? I just wanted to invite one person to be my "friend" or "connection" or whatever, and now I have to hand over the keys to my email account?Â
This is normally where the savvy user looks for a little button nestled in a corner somewhere that says something like "Skip This Step," but such a thing was nowhere to be found.
Still and all, I was assured that my "contacts are safe" with good ol' LinkedIn: "We'll never email anyone without your permission." So what's the worst that could happen? Â
Â
 After clicking "Continue" to allow LinkedIn to plunder my Gmail contacts, I got to this page, showing a grid of existing LinkedIn members with email addresses that matched my contacts:
 Â
This is where things get interesting. The pale box where you select profiles to "connect" to is actually a scrolling pane containing many contacts, only a fraction of which are visible on the page.Â
You can imagine how easy it might be to miss the fact that dozens more checked profiles are hidden below the threshold of the frame. Yes, there is a scroll bar on the right side of the panel that might clue you in, but the overall design serves to obscure what's actually going on.Â
A common way to make it clear that there is additional scrollable content below a âfoldâ is to size the scrollable box so that the last visible items are cut off somewhere in the middle, thus making it clear that there is additional content below the fold. However, in this list and other one Iâll show below, the scrollable boxes are sized to exactly align with the bottom of the last visible items. Still and all, there is a scroll bar with arrow buttons.
Anyhow, I clicked the "Skip this step" link, but the next page is the one that bit me. It's a list of email contacts found that don't match existing LinkedIn profiles.
Â
We see here the same problem of hidden below-the-fold items as on the previous screen, but with a fun twist:Â The scroll bar has changed to be less recognizable.Â
It's narrower, the arrow buttons are gone, and in general the thing is smaller and more subtle, and therefore easier to miss.
Now why would the scroll bar be different on this screen versus the previous one?
The previous page showed people already with LinkedIn profiles. This one consists of addresses without LinkedIn profiles. Â It's far more important to LinkedIn to bring in new users than to connect existing ones. So this page, whose purpose is to bring in new users, is accordingly more deceptive than the previous one.Â
No points for the "260 Selected" label at the top right corner of the frame, which is a fig leaf that wouldn't register at all with most users, who go through these flows quickly without studying every little label in the UI. (I only just noticed it as I was poring over these screenshots while preparing this post.)Â
When I got to this page, I unfortunately saw a few names of people I decided I wanted to invite, so I unchecked the names I saw of people I didn't want to invite, and of course had no idea that 200-odd addresses were still selected and hiding below the fold. Leaving selected the (I thought) three or so people I wanted to invite, I clicked the blue button. Boom. I'd spammed hundreds of my contacts with LinkedIn âinvitations.â
It would be exceedingly easy to do this without even knowing what had happened. There's no confirmation dialog asking, "Are you sure you want to invite 250 of your contacts to connect?" You only get a little green alert box to indicate that invitations have been sent, and it disappears after a few seconds.Â
And those invitations are effective. The email masquerades as a little personal note from me:Â
It's a well-known compliance trick: Requests from people we know, especially friends, are more difficult to ignore than those from an impersonal business.
So this all might still not seem like such a big deal to you, but it was all very embarrassing to me. I got several responses from friends (e.g. "Hey Mark, I thought we were already connected through my other email address...?") that clued me into the fact that every recipient could think that I had intended to individually invite them. Current bosses and colleagues. Random former colleagues. Friends of friends. People who'd rejected me for jobs. My ex-girlfriend's mom who never liked me (it still bothers me).
And that's not all! LinkedIn doesn't just stop with one round of spam, but it repeatedly sends reminders with messages like "Mark is still waiting for your response." When I found out that LinkedIn was continuing to spam all of those contacts, not knowing how long this would continue, I felt I had no choice but to revoke each invitation and send an apology to everyone on the list.Â
LinkedIn's own help boards are teeming with complaints about unauthorized invitations. Complaints can be found in the blogosphere as well. Most of these users have no idea how the invitations got sent out. I'd bet dollars to doughnuts that in every case, it happened in exactly the way I described. What's most maddening is that this UX anti-pattern, hopelessly broken from the user's perspective, is working exactly as LinkedIn's designers intended.
(It turns out there is a way to send an "invitation to connect" to a single e-mail address â remember? That's what I was trying to do when I got into all this trouble in the first place. It's difficult to find, of course.)Â
After not reaching out to LinkedIn, I did not get this made-up response from a LinkedIn spokesman:
Well, we could provide a straightforward, obvious way to type one measly e-mail address into a box, but we'd much rather spam hundreds of your contacts, using your name and face, again and again.
So what do we do about it? Shutting down my LinkedIn profile would seem like the very least I could do, but to my shame, I won't even do that: LinkedIn has just become too darned useful as a networking tool, so I don't feel I can ditch the thing altogether. I'll content myself with saying this: LinkedIn, use UX for good, not evil. Eschew dark patterns. You're a big, established, mature company now. It's time to act like it, and treat your users with respect.
UPDATE: Some internet people contended that this was all more about me being stupid than LinkedIn being evil. I respond here.
Spotify uses a little speaker-indicator to show which track is currently being played. You can see it at the left side of the image below.Â
Unfortunately, that indicator is placed in the exact piece of real estate that otherwise shows you whether the track is "starred".Â
Therefore, with the track currently being played, you have no way of knowing whether it is starred or not until you hover over the speaker icon with your mouse cursor, which hides the speaker/playing icon to reveal whether the track is starred. Â
(Starring tracks is a pretty important action to me, as I often use the "Starred" collection as a playlist.)
Unfortunately, the vast majority of the times that I have wanted to know whether a particular track was starred have been while the track is playing.
This makes sense, right? "Hey, I like this track. Have I already added it to my favorites? I can't tell by glancing at it, because the speaker icon thing is in the way, so I'll push my mouse cursor to hover over this tiny icon ... ah, I see now that I'd already starred the track. Never mind."Â
The result is a repeated waste of time and effort. Why does Spotify cover up an important indicator exactly when it's most relevant to the user? And why are two unrelated UI elements forced to share a spot in the interface in the first place?Â
Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
â Live Streamingâ Interactive Chatâ Private Showsâ HD Qualityâ Free Actions
Free to watch ⢠No registration required ⢠HD streaming
Zipcar was having some trouble when I was trying to modify my reservation today.
After clicking on a âchange reservationâ link, I first saw an animated activity indicatorâ
and after a minute or so, the site apparently gave up, serving up this page with this message:
âHang on while we refuel.
Weâll get you zipping again in no time.â
As an error message, this is worse than useless. If the site instead had served up, say, a generic error page with a status code, I would at least be aware that something went wrong. But with this message, I could only be sure that an an error had occurred because the word âerrorâ was in the URL.
This message sacrifices clarity for cuteness. Why?
It doesnât clearly indicate that an error occurred
It doesnât explain why it happened
The userâs recommended next step is ambiguous
âHang on while we refuel / We'll get you zipping again in no time" could be interpreted as an instruction to do nothing and wait for something to happen
How about something like this:
Sorry, but an error occurred. Our website is too busy to complete your request. Please try again later. If you require assistance now, call 1-866-4ZIPCAR.
An error page should explain what happened in non-technical terms and guide the user to a solution.Â
Zipcarâs error page doesnât even tell you that thereâs been an error.
Retina-class displays are no excuse for disregarding type readability
Back in the old days, Georgia and Verdana were the workhorse typefaces of the Web. They were designed specifically to be highly legible on low-resolution displays (i.e. screens) whereas most older typefaces were designed with a very high resolution display in mind (that is, paper). Â
But today's larger, higher-resolution screens, as well as easy-to-use web-font solutions like TypeKit, are allowing designers to create roomier designs with more adventurous typography. The smartphone world in particular, with Retina-class displays (and print-like screen resolutions) nearing ubiquity, might encourage even greater latitude.
But the fact that a high-DPI display can flawlessly render razor-thin letterforms doesn't give us an excuse to stop worrying about legibility.
You can see in the top screenshot that Mashable's site, set in Helvetica, is more readable than Betaworks on the bottom (using a free Google font), even though Betaworks uses a larger font size. The difference is more pronounced on an actual Retina iPhone screen, which is smaller (and sharper) than the above screenshotâassuming you're not reading this on a mobile device!
iPhone and other super-high-res screens might have incredible sharpness, but don't forget that you're still dealing with little letters on a very small screen.Â
I'm not advocating a return to the boring old days of Verdana everywhere, but when choosing a typeface, particularly for a mobile application, legibility still needs to be the top concern.
And don't forget that lots of smartphones still don't have Retina-class displays!Â
Sometimes when I'm using Yahoo Fantasy Baseball, I'll apparently be logged in normally, able to browse around and view my team and league info:
Â
Â
But when I try to take some action like changing my lineup, this browser alert box pops up, telling me, "Your login cookie has expired": Â Â
Â
 Â
When I hit "OK," I get kicked out to a generic Yahoo page (featuring an enormous ad) that makes me type in my password to continue:
Â
Â
Once I enter my password, it sends me back to where I left offâI had edited my lineup and hit "Submit Changes." The system remembers the transaction I was trying to make, and completes it after I submit my password.Â
There are a number of problems here.
First:Â The browser alert box is jarring, and it's a bad way for the site to communicate such a message. It should be handled within the page in a way that is consistent with the experience of the rest of the site.Â
Second:Â The alert's descriptive text, "Your login cookie is expired," uses technical jargon that's meaningless to many users.
Third:Â This process doesn't really need two stages (the browser alert and the password-entry page). It would be better if they were consolidated into one step.
Fourth:Â After I enter my password, my lineup change is acceptedâbut how do I know that? After having been kicked out of the flow of my task, I can't remember what I had been trying to do.Â
There should be some indication of what the attempted action was, and that it was successful. Here's a suggestion, but I'm sure there are better and fancier possible solutions:
Â
Fifth, and most importantly:Â Why does Yahoo Fantasy Sports allow you be both logged in and not logged in at the same time? Whenever the snafu described above is about to happen, all indications show that I am signed in, and I can browse around and do stuff that's only possible as a logged-in user. But it turns out that I'm not quite logged in enough to edit my lineup, so my experience is unexpectedly interrupted by two annoying hurdles: the dialog and the password page.
If Yahoo Fantasy Baseball needs to periodically confirm that I'm me, it should do so as soon as I begin my visit, and not let me continue unknowingly in a logged-in-but-my-login-cookie-is-expired state until I hit an unexpected roadblock, which comes at the very moment that I'm most engaged with the site.
When you install QuarkXPress for the Mac, its installer sets up an updating utility to automatically run at a set interval.
If QuarkUpdater finds that you have the most recent version of QuarkXPress, it pops up a modal dialog box informing you of the fact.Â
So I am sometimes greeted by this unasked-for dialog, and QuarkUpdater's bouncing dock icon, when I arrive at work.
I assume it behaves this way to keep the user informed when he or she manually initiates a check for updates. But it doesn't make sense to show this dialog box when the updater is run automatically. The auto-updater should unobtrusively check for software updates without bothering the user when there is nothing new to report.
If you're wondering, you can disable automatic updating of QuarkXPress in System Preferences, in the Quark Update preference pane.Â
Pedantry corner: This example also contains a grammar gaffe. âUp to date,â as it's used here, shouldn't be hyphenated.
Daring Fireball is on my daily must-read list. When he's at his best, John Gruber's insight and analysis are indispensable.Â
But often, he tosses off drive-by opinions like the following:Â
Ron Johnson Out at JC Penney
Iâm with Moltz and Panzarino; they shouldnât have hired him if they werenât going to give him more time to turn it around.
Really? So what does Gruber know about JCP's financial condition, the retail industry, Ron Johnson's execution as CEO, or JCPenney's business in particular? I'm guessing he doesn't follow any of these things too closely.Â
The culprit is an acute case of smart-guy-itisâa condition suffered from many whose high intelligence leads to overconfident pontificating about issues outside of their areas of specialization. (It's similar to male answer syndrome.)
For an egregious example, let's look back to January 18, when Gruber was pushing a theory hatched by some guy on Seeking Alpha claiming that options traders were conspiring to push Apple's stock price down, with the goal that certain options would expire worthless when the stock closed at or below $500. The conspirators would then amass big profits during the inevitable run-up in Apple's stock price that would follow.
As AAPL closed at $500, quoth Gruber, "I still have that bridge to sell you if you donât think the fix was in on this."
Not "this looks like an interesting theory" or "the closing price seems a bit uncanny," but to Gruber, this conspiracy of options traders to manipulate Apple's share price was so obvious that he had a bridge to sell to skeptics. He should get a job at the SEC!
The ensuing run-up in Apple's stock price didn't happen. Today it closed at $426.98. Where's my bridge?Â
Anyhow, back to Ron Johnson, whose reign lasted a short two yearsânot long enough to have a fair shot at a turnaround, claims Gruber.
Well, Gil Amelio lasted 500 days as Apple's CEO before he was shown the door and replaced by Steve Jobs. Maybe Amelio was fired too soon?Â
Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
â Live Streamingâ Interactive Chatâ Private Showsâ HD Qualityâ Free Actions
Free to watch ⢠No registration required ⢠HD streaming
"Dig responsive design? Hate fluid grids? Try a Frameless grid." I was sold on the Frameless approach when I first laid eyes on that headline. But I had a hard time finding examples or technical explanations showing how the Frameless system is used, so it was difficult to get started. After figuring things out a bit, I decided to write this tutorial in the hopes that it will be useful to others.Â
Let me start by sharing links to the most useful resources I've found elsewhere.Â
This article by Pete Wailes doesn't go into technical detail; its purpose is to give you a high-level approach to designing for the Frameless grid system. Â
Stack Overflow user lolmaus offers a plain-English overview of the Frameless grid.Â
Another denizen of Stack Overflow, Davy8, explains Frameless's core LESS variables and mixins.Â
The Frameless stylesheet is implemented in both LESS and SASS, which are CSS preprocessors that allow for such goodies as variables, nested rules, and more. I elected to use the LESS version for this guide. If you're unfamiliar with LESS, I recommend spending a short time learning the basic concepts before continuing. I also assume you're well-versed in CSS.Â
An overview of the Frameless grid system
The unit of measurement in the Frameless grid system is the em. The em is unique in CSS because it doesn't have a fixed meaning; rather its value is relative to the font size of the parent element. Â
In typography, the em is traditionally the width of the capital letter M (hence the em-dash). CSS changes things up a bit by deriving the em from a vertical, rather than horizontal, measurement. As Jon Tan writes,Â
One em equals the vertical space needed for any given letter in a font, regardless of the horizontal space it occupies. Therefore: If the font size is 16px, then 1em = 16px. ⌠at the default browser setting, 1em = 16px.Â
And following on that, if you set the font size of a div to 22px, then an em will equal 22 pixels inside that div. The fact that the size of an em is based on the font size of the parent element means that the em can mean different things on different parts of the same page. This introduces some complications to the Frameless system that I'll address later in this guide.
Here is the how the basic units of the Frameless grid are created in frameless.less:
@font-size: 16; // Your base font-size in pixels @em: @font-size*1em; // Shorthand for outputting ems, e.g. "12/@em" @column: 48; // The column-width of your grid in pixels @gutter: 24; // The gutter-width of your grid in pixels
Here, you set the widths of your single columns, gutters, and the base font size. From these measurements, the units of the Frameless gridâits columnsâare calculated below:Â
If you will need more columns for your layout, you can add them here; likewise you can remove unneeded columns.Â
These columns will be the building blocks of your layout. You use them as widths (and heights, if you like) the same way as you would other units in CSS. For example, if you want to float a 3-column div to the right of a 2-column div, you could write the following:Â
Note that you have to account for gutters in your code using the @gutter variable.
You also saw the following line above, which merits some discussion:Â
@em: @font-size*1em; // Shorthand for outputting ems, e.g. "12/@em"
You will want to use this shorthand in lieu of absolute measures such as pixels when you're setting sizes of things that won't be measured in columns, like font sizes, paddings, and margins. If you set a measurement as 16/@em, it resolves to 1em in CSS, which is equivalent 16 pixels because your base font size is 16.Â
Why do this instead of simply using pixels or points? Because if you zoom your whole layout in or outâwhich I'll show you how to do belowâmeasurements in the above shorthand will zoom proportionally with the rest of your layout.Â
Once you have your columns set, you can set your basic styles and design your layouts, progressing from the smallest (mobile) to the largest. As your stylesheet progresses to larger, more complex layouts, you add columns to your grid, while styles are inherited from the smaller, simpler layoutsâtherefore it's truly mobile-first design.
A simple example using the Frameless grid
I've constructed a basic page to demonstrate the essentials of the Frameless grid. You can see the distinct layouts by resizing your browser window.
View the page's LESS stylesheet here. Note that there are distinct layouts for mobile, wide mobile, tablet, and desktop, each declared using @media queries. Additionally, I added one full-page zoom for widths of more than 1024 pixels.Â
(In your own design, of course, you can set these "breakpoints" wherever you'd likeâwherever you feel they would make sense.)
Looking at the LESS stylesheet, you can see at line 151âstarting with the comment
/**** common styles *****/
âis where basic styles, common to all layouts, are declared. Then, progressing down the stylesheet, we work our way from the smallest to largest layout sizes. Each size inherits styles from the smaller sizes that came before, while overriding previously-declared values when necessary.Â
At line 377, towards the end of the file, we see the full-page zoom. At sizes above 1024 pixels, the desktop layout is unchanged, but the following code enlarges the entire layout, including the background image:
body { font-size: (@font-size + 2)/16*1em; }
 Deciphering framelessgrid.comÂ
For a slightly more complicated Frameless setup, let's look at the framelessgrid.com site.Â
Its LESS source code can be seen here on Github. You now can see where I got the layout sizes for my demoâI used a simplified version of this setup, ommitting the huge-screen layout for screens above 118 ems.
Framelessgrid.com also uses a more complex set of full-page zooms. You can see that the full-page zooms are grouped in a section on their own, starting at line 581.Â
@media screen and (max-width: 16.875em) { body { font-size: (@font-size - 2)/16*1em; } #masthead, #introduction, article section, #colophon { padding-left: 10/@em; padding-right: 10/@em; } } @media screen and (max-width: 19.9375em) { body { font-size: (@font-size - 1)/16*1em; } } @media screen and (min-width: 32.5em) and (max-width: 37.4375em), screen and (min-width: 45em) and (max-width: 56.9375em), screen and (min-width: 77.5em) and (max-width: 102.4375em), screen and (min-width: 135em) { body { font-size: (@font-size + 1)/16*1em; } } @media screen and (min-width: 102.5em) and (max-width: 117.9375em), screen and (min-width: 150em) { body { font-size: (@font-size + 2)/16*1em; } }
You can see that there are five zoom levels used here. At the base "zero" level, 16/@em equals 16 pixels, and this doesn't need to be explicitly declared, because it's the default behavior.Â
font-size: (@font-size - 2)/16*1em;
indicates that the layout should be zoomed out by two levels.
font-size: (@font-size + 1)/16*1em;
indicates that the layout should be zoomed in by one level. And so on.Â
The fact that this full-page-zoom section is kept separate from the section styling the different layouts makes it a bit difficult to see the relationship between framelessgrid.com's layouts and zoom levels. I created the following chart to help make it more clear. The dotted lines delineate a change in layout. Shading shows the different zoom levels.
You can see here how this approach is appealing for those who "hate fluid layouts" but want to embrace the flexibility of responsive design. Between the distinct layouts created for different form factors, you can zoom your layout in or out to create intermediate steps. Therefore you can create a smooth progression of adaptations, and each change in your page's appearance represents a discrete and predictable step. You retain full control of your layout at all times. This isn't necessarily the case with fluid layouts.
There's no magic to the Frameless system that takes work off your handsâyou still have to figure out how to position your elements in CSS as you did before. Hence, as its author writes,
Is Frameless a framework? Nope. It doesnât include any code. [Not totally accurate! It does include some code, as we've seen.] Itâs just an idea for a specific type of adaptive grid. You can use it as a good starting point for a new design, but youâll still have to do all the hard work of designing and coding yourself.
Frameless is more of a set of tools, rules, and an approach that helps you build your own adaptive grid.
Some pitfalls and caveats
As I mentioned before, the em is the unit of measurement in the Frameless grid. That is to say, when your Frameless-based stylesheet goes through the CSS preprocessor, any measurement you specified in columns or the /@em shorthand are expressed in ems in CSS.
The em is also a unit that is defined as the font size of the parent element. So any element for which you might set a font size different from the base font size, like an <h3> or <p>, you probably don't want to size in columns or using the /@em shorthand, because you've fiddled with the meaning of an em by modifying the font-size. In short, if you size an element in columns and change its font size, you'll get unintended results. [But see the update at the end of this article for a workaround.]
Also be aware that even when sizing in columns, the rules of the CSS box model still apply. Therefore, if you set padding for your element, it will add to the total (visual) width of your element. This means that if you, say, set an element be @2cols in width, and then add padding to the left and/or right, the element will visually take up more than @2cols in width, possibly messing up your layout.
Here's the solution to both of the above pitfalls: Whenever you might run into these problems, separate the conflicting measures into parent (container) elements and child elements. In general, you might want to separate structural elements of your layout from its content.
This extra code will detract somewhat from the Zen-like purity of your HTML code. But other grid systems might be even less gentle with your markup.Â
In conclusion
I haven't been using Frameless for long. If I've made mistakes, misrepresented concepts, or completely missed the boat, let me know via e-mail or hit me up on Twitter.Â
Thanks for reading, and thanks to Joni Korpi for creating the Frameless grid system.Â
Update:Â Mark Root-Wiley writes in with a workaround for the sizing issues involving ems:
With my prior experiences with ems, I immediately saw the drawback you mentioned. I forged ahead regardless but got sick of the font-size-borks-width issues quite quickly. And that's when I realized that the work-around should have been obvious to me immediately. I've started coding some sites with rems recently and have loved it. You still need to provide a pixel fallback with rems, but A) there's at least a SASS mixin for that [which replaces using that $em measurement technique you mention] and B) Frameless Grid itself says to "Leave IE6-8 Behind," so giving those browsers the fallback doesn't really feel that dirty.
Google quickly showed me that I wasn't the first person to think of this, but I'm digging it in the hour since I reworked things to use it and so I thought I'd pass it along. I may be overlooking some really obvious reason why this will fail, but for now I'm thrilled and I wanted to pass it along in case you thought it worth mentioning in the article for others' benefit.