Blog

Later Ctrl + ↑

Signs in an Israeli train bathroom

A couple of days ago I visited Beersheba, a city in southern Israel.

In the train bathroom, there are two signs, one above the toilet, one above the button:

Both are dumb.

The sign above the toilet wants you to not throw paper and diapers in the toilet as there is a bin for that:

But what do you really see? The toilet is crossed out (there is no toilet?). At a glance, you just see a green checkmark and a hand that throws stuff. So, it’s OK to throw stuff. Nobody cares that there is a bin on the sign: the sign itself in placed above the toilet. The proximity is more powerful than the pictogram of the bin.

The sign above the button is dumb in a different way. The pictogram explains that it’s a button next to the toilet:

Oh really? I had no idea that it’s a button next to the toilet!

One spinner is enough

In user interfaces, a spinner is a normal indicator of thinking or loading. However, the modern web is often build from blocks that could be loading independently. As a result, you got multiple spinners spinning:

Not good.

The application architecture should account for the fact that multiple things could be loading at once. Where would the spinner be displayed? In the case of multiple instances of the same block type, it’s enough to show the spinner in lieu of the first one. When the blocks are diverse, in general it’s best to put the spinner in the largest or the top-most block.

The classic iPhone used to have a loading indicator right in the status bar:

If memory serves, there was an API for an application to tell the status bar: “Hey, I already have an indicator in my interface, so don’t show yours”.

But the art of thinking of how to avoid rubbish on the screen, has long been forgotten even at Apple, so you can’t expect this level of care from Twitter.

Using timezones in Calendar in remote teams

Those who have remote colleagues and clients sometimes struggle with timezones and don’t know how to use Calendar.

Here’s what you do. Turn on timezone support if it is off for some reason:

When you add a meeting, specify its timezone (unless it’s the one you are in):

In the toolbar, select which timezone to display your calendar in and create events by default:

To be honest, I have no idea how come this “timezone support” is an option and what happens when it’s off.

How to do Offset Path in Figma

I’ve learned how to do Offset Path in Figma. Say you have a path, and you need to make another one parallel to this one at an offset x:

You copy the first path and give it a stroke width of 2x:

Then you do Outline Stroke (⌘⇧O) and adjust the stroke to your liking:

And then you remove the unnecessary points:

Done! Crazy, but better then “you can’t do it”.

Resizing Mac Windows

If you start dragging a window’s border, the window will start to resize horizontally or vertically in that direction. And with the Option key pressed, it will resize symmetrically in the opposite direction as well (like in Photoshop, yes).

If you start dragging a window’s corner, the window will start to resize both horizontally and vertically in that direction. And with the Option key pressed, it will resize symmetrically in all directions.

If you double click a window’s border, the window will grow from that side to the edge of the screen. If you double click a window’s corner, the window will grow to the corresponding corner of the screen.

Therefore, to make a window cover the whole screen (but not go into the dumb full-screen mode), just alt-doubleclick any of the window’s corners.

See also:

Derbent bus map

Check out our new transit map. This time it’s Derbent:

We made it with Nikita Dubrovin. The city is undergoing a public transport reform. The first bunch of bus routes have been simplified: 3, 4, 7, 10. The challenge was to lay out the old routes, which are still confusing. In several years, all routes will look reasonable.

How to trim text the right way

Recently, I wrote about Facebook’s crappy handling of long posts: it’s trims the text randomly and loses your reading position when expanded. So how should it be done? Let’s deal with the trimming first.

Trimming text in a random place is disrespectful to the author and the text, and is a further proof that Facebook doesn’t care what you write. It’s also an example of deep technology dependence: it’s easier for a machine to trim to a certain number of characters, and so it does.

There could be an aesthetic rationale behind trimming text, i.e. to make it fit into a certain design element. Of course this is also disrespectful to the author and the text, but at least the motives are humanistic. However trimming after a fixed number of characters is not even this: the physical size of lines of equal character length is usually variable: compare “iii” and “WWW”. Even in my Facebook example, a few more words would fit in the same box:

Sometimes trimming randomly not only ruins the meaning of the text, but changes its to something indecent:

So, if you can’t do without trimming, you have to trim carefully. How does Aegea do it?

The character limit is considered a rough guideline, not an exact value. If you need to fit in 140 characters, and the text is 143 characters long, then Aegea just won’t touch it. If the text is noticeably over the limit, then Aegea will divide it into sentences and try to take as many full sentences as it can fit. Here, for example, is the snippet of this post:

However, if the result is too short (or no whole sentence fits at all), Aegea will look for other signs of safe trim positions: semicolons, dashes, commas, brackets. Only if none of these are present will it trim at a word boundary. And only if there are no word boundaries, will it trim by the number of characters. The absence of word boundaries is a sure sign that the author themselves didn’t care about the meaning, so it’s fine if neither does Aegea.

In general, Aegea will try to make it as close to the desired length as possible, but so that the meaning does not suffer.

If I can code this, what would stop Facebook from doing it? I think it’s that it hadn’t even crossed anyone’s mind. Why would Facebook even care about doing anything well? What a nonsense. There is no such metric.

Selecting from one SIM card on iPhone

Previously, when I swapped my SIM card, the iPhone more or less immediately asked to unlock it. But now for some reason it shows this interface, in which you can both “Cancel” and “Skip”, but to unlock the SIM card, you must first select the SIM card from the list! Of a single item:

I suspect this was introduced when dual-SIM phones came out. In theory you could insert two new SIM cards at once, and you’d have to unlock both. (It’s still unclear why you have to select them from the list first, but okay.)

In my “User Interface Fundamentals” course I have a lecture “Technology Dependence”. One of its sections is called “1, 10, 10, 1000”. It is about the fact that bad designers make interfaces assuming there will be N items, ignoring the fact that the best user interface for N items depends on the value on N. The interface above is clearly bad for N=1, and here, 1 is the most probable value of N.

The broken “See more” in Facebook

Pinpointing individual problems with the Facebook’s user interface is odd, as everything there is done with contempt for the user. However, I keep stumbling over this nonsense every time, and I just can’t understand why someone would do that.

So, Facebook trims long posts at a random place (moron) and puts a “See more” thing there. If you click it, it expands the full post. But instead of expanding it downwards, it expanding it upwards! The text that you were reading a second ago and hadn’t yet finished reading, jumps who knows where, and now, there is something absolutely unrelated in front of your eyes:

By the way, once in ten times, “See more” would open a post in a new tab instead of expanding it on the spot.

Tiles, balance, and harmony

Like all normal people, I have an OCD about sidewalk tiles. I have to step on the seams the same number of times with each feet. Or, if I step over a drainage canal with my left foot, then I have to step over the next one with my right foot. I take delight in balance and harmony in my life.

When I was running today, the peculiarities in the tile pattern occurred once every ten meters or so. It goes without saying that my feet should have had an equal share of them. But who would intentionally mess up their running pace just for that? I want everything to be smooth and natural, otherwise it’s hardly balance or harmony.

To my surprise, I didn’t actually have to think or analyze anything. My body perfectly adjusts the stride length so that everything flows seamlessly (no pun intended). As I see another strip of red tiles seven meters away, I somehow know how to run so I can step on the next one with my other foot. Turns out, balance and harmony come easy to me.

Earlier Ctrl + ↓