Selected

Later Ctrl + ↑

Two stupid windows on a Mac

There are two stupid windows on a Mac that annoy the hell out of me.

This one appears on my main machine in a couple of minutes after I close the lid of my notebook:

It tells me that the remote volumes are no longer available, which I well know and don’t give a shit about. What am I supposed to do with this information? If I were using the volumes in any way, like copying a file, I would have noticed the problem long ago (as the file would stop copying, obviously).

Additionally, it has two buttons that do exactly the same thing: nothing. No matter what I press, the volumes are no longer available and I can’t do anything about it. What do you mean “Disconnect All”, it’s been disconnected several minutes ago, and we both know it. This window should be killed.

This second one appears one in ten times when I change something in iCal:

Now what is that? Not only are they dumping some cryptic server messages onto me, they are also presenting me with a choice. What am I supposed to do here? I don’t want to go offline, because why would I, and I don’t want to “Revert to Server” because I have no idea what it means.

“Revert to Server” is the default one, so it feels like it’s safe to choose it, but I’ve learned that it actually undoes my latest change. There’s no excuse for that: I’ve made my change for reason. Why would you even offer me the choice to undo it, let alone make it the default one? And “Go Offline” actually saves my edit and syncs it to iCloud (when it’s in a better mood later). Someone in iCal department should read Raskin and learn that user’s input is priceless, and it should always be saved by default.

Just change the button names to “Save and sync when possible” and “Forget what I’ve just done”, and it would be ridiculously obvious that this window, too, is useless and should be removed.

The dark secret of yellow

The dark secret of yellow is that there’s no such thing as “dark yellow”. Many designers have technical background, and so they fail to acknowledge this fact.

Let’s say we need to create a series of color buttons for some UI. I’ve started with a green one and then quickly made a blue one. Here are the buttons and the way they are constructed:

As you can see a blue button is just a green button with a blue Hue layer on top. And the Magenta button also has an adjustment Curves layer, because otherwise it looks too dark. The bottom two layers are all identical. The base one is a green fill layer with a gradient overlay for button not to look flat and a gradient stroke for sharp edges:

So you can make a button of any color by just adding a Hue and an optional Curves layer, and it will look OK.

Unless it’s yellow:

If we use this method to create a yellow button, it will look like shit (literally, sometimes). Let’s be honest, It’s not yellow, right? And no Curves will make it look good.

Here’s another take on the yellow one:

Now this is yellow. The button was re-made from scratch. The base layer is changed to yellow, but the main change is the  change in the gradient overlay:

It’s not black and white anymore, it’s red and white. The problem with a black and white gradient is that it will try to make a “dark yellow” color which is not yellow at all. The darker you want yellow to be, the more you should shift its hue towards red:

For the button’s body I’ve used a red gradient overlay, and it worked fine. As of the egdes, I’ve just hand picked colors for the new gradient stroke. I’ve also made the glare twice more intensive, because otherwise we’d barely see it. Oh, and the shadow of the yellow button is slightly lighter, because otherwise we’d percieve it as too dark.

Let’s take an eyedropper and see which hues are there now:

The yellow button has different hues, but looks good. So maths isn’t always your best friend, unfortunately.

I have to point out that every button can be made better by hand-picking colors instead of relying on maths. But while for most colors shifting hues works rather fine, for yellow it’s absolutely unacceptable.

My iOS 6 predictishlist

Next iOS must be coming soon. What is going to be in it? I’m not sure where to draw the line between “predictions” and a “wishlist”, so here are my thoughts on things that either were speculated, or I just want to be there, in no particular order.

Maps. Everyone has written about Apple planning to switch to its own mapping backend instead of Google’s. And presumably there will be some cool 3D views. I’m curious whether Apple was able to come up with their own navigation, traffic and local transport services. I also wonder if all these awesome things will work in Russia.

Better Notification Center. Notification Center sucks. Not only is it ugly, it’s unusable. It’s particularly bad on the iPad. It should show more text for each notification. The settings for it is a nightmare, it’s impossible to configure it.

Don’t Disturb. There were screenshots of a “Don’t Disturb” feature in Mountain Lion. I guess it temporarily disables all notifications. This would be great to have in iOS, too.

Widgets. Some people want custom Notification Center widgets and even predict an API for that. Given how bad Notification Center is, adding even more crap to it won’t make it better. I’m for Live icons instead.

Live icons. It’s great that the weather is always +23 ˚C (+73 ˚F if you are from U. S.), except that it’s not. Currently only the calendar icon shows the real date, every other icon is meaningless. The most useful would be making the Weather icon show the real weather, but also Clock could show the real time, Maps, your current location, Notes, the text of the latest note etc.

Better Siri. I don’t know much about Siri since I’m on iPhone 4. But there’s no doubt it can be made better (and Tim Cook has hinted it in his interview). The obvious thing to do is to add some integration with third-party apps. Also, what about Siri for iPad?

Default Apps. If Siri supports third-party apps, it should know which apps I use for what. E. g. if I prefered Opera for web browsing I wouldn’t want to always say “Siri, search web for X with Opera”. I’d just want Siri to know it. The most natural way will be for it to just “figure it out” without some messy settings like the Notification Center has. But even without Siri, default apps will be welcome (some people prefer Sparrow for mail!).

Apps interaction. Something like Windows Phone’s Contracts should be added to iOS. If I have selected a piece of text, I want to be able to translate it without going to the Google Translate app. And the “share sheets” should be extendable. Currently in Twitter app I can send a link to Instapaper or Read it Later, but not to Readability — because Twitter doesn’t know Readability. But Twitter shouldn’t even care, the system should know it. Apps interaction (or lack thereof) is one of the weaknesses of iOS.

Airdrop or wireless sharing. Easier sharing between devices and friends will be great. Currently sending a picture or a piece of text over the air to someone nearby is almost impossible. Or, Imagine that you are looking at a web page on your iPhone and want you friend to open it on her iPad. What would you do? This should be easy.

Work together. All my devices should work together and know when they are close to each other. Don’t display same alert everywhere. If I postpone an alert, postpone it everywhere. Sync open browser tabs, clipboards and everything else.

Airplay target. Open a movie on a Mac and send it to play on an iPad. This should be doable, at least after Mountain Lion (with Airplay) is released.

Better multitasking. I don’t know what exactly has to be done, but I want switching between apps to feel fast and harmless. Currently I think twice before leaving an app.

Facebook integration. I don’t care about it at all, but I’m listing it because it was rumored.

Safari Omnibar. In Safari 5.2 Apple has added what people call an “omnibar”: an addressbar combined with search. Invented by Opera in the 18th century or so and popularized by Google Chrome, this thing was conspicuously missing from Safari for so long. I can’t tell you how many times I’ve entered a search request into address field on my iPhone to get nothing. Modes suck.

Offline Reading List. There were some screenshots of this in desktop Safari, but in mobile one it will make even more sense.

iCloud Tabs. This is included in the latest builds of Mountain Lion, so I guess we’ll see it in iOS 6.

Sync iTunes Match over Wi-Fi. I like iTunes Match (even given how unbelievably buggy it is), but I prefer to use old good iTunes sync, because it works much faster. iTunes Match should detect that my library is available in the local network and download tracks from it (instead of from iCloud).

Sync track positions with iCloud. Want this for podcasts, tired of syncing by hand 5 times a day.

Visual refresh. Aren’t you tired of the standard controls? The transition to the rounded on/off switch (in iOS 5) is not enough. I want something of a Leopard-to-Lion scale at least.

Related links:

Apple and Kaspersky

If an executive at some company announces a product or any meaningful partnership with Apple or somebody says that such an announcement has been made, ignore the news. It’s easy: Apple announces all its stuff itself.

Kaspersky’s CTO says Apple asked it to analyze OS X for vulnerabilities. Resolution: bullshit. Let’s imagine for a second that Apple really did ask Kaspersky to do that. Obviously Apple would want that Kaspersky keep their mouth shut. Why would Kaspersky ignore that and speak out anyway? Only one explanation: because they are not in any relationships with Apple and never were.

Kaspersky likes to publicly say bad things about Apple and its security. It doesn’t matter if they are even right, but they surely repel Apple. Apple completely ignored their latest attempt to “help” with Flashback. Do you want help from someone who bashes you all the time?

Kaspersky is terrified that soon there will be no place for them in the world and they are desperately trying to make people think they are important. I’m sure they analyze OS X for vulnerabilities day and night without any requests from Apple in hope to find something and say: you need us. Of course security experts will always have job. But if Apple needs them, they will have a job at Apple.

Make iTunes Store better by removing it from iTunes

A lot has been said about how bad iTunes is. What bugs me most is that some actions within iTunes prevent me from actually listening to music. Sometimes iTunes is “Looking for iPhone...” and you can’t do anything until it’s done. And it still doesn’t do the most obviously useful thing for music listener: permanently display current track name somewhere. So we had to make Emcee.

But I’d like to take a look at the iTunes Store (including the App Store). How can it be made better?

What I hate about iTunes store is that it’s clearly a web site, but I can’t use a browser to browse it. The web view of iTunes is crippled and ridiculously slow. Why not use Safari? It will not only make the store better for the user, but I believe Apple will sell more songs and apps.

I can’t open a link in new window or tab. Sometimes I want to check out several things from a chart or from search results. Unfortunately, ⌘-clicking them won’t help, I’ll have to open each, then go back. I don’t think I’m the only one who forgets about going back.

I can’t add link to bookmarks. iTunes has a “wishlist”, but it’s only available on a Mac, not iPad or iPhone (or I wasn’t able to find it there). I want to use the Safari bookmarks manager with the store like with anything else and I want it to be synced between my devices. There are also, of course, no bookmarklets in iTunes, so I can’t tweet an app and I can’t send it to Instapaper (some apps have really long descriptions). No obvious way to save and share links is bad.

Some other things I can do in Safari but not in iTunes: zoom a page, drag an image (i. e. album art), pin a portion of a page to Dashboard, search history, find in page. I’ve found myself searching for a feature in an app’s description a couple of times, and I had to use eyes for that, which is just waste of time.

iTunes is already so bloated that it isn’t even funny. So adding all this stuff to iTunes is not an option. To make iTunes store better Apple should just move it from iTunes to Safari.

Rename layer in Photoshop CS6

In previous versions of Photoshop I’ve always set up F2 to open Layer Options dialog. The layer name field was focused by default, so that’s how I renamed layers.

For mysterious reasons in CS6 Adobe has removed Layer Options from the list of things for which you could use a keyboard shortcuts. I was upset. I had to use mouse to rename layer (which takes ages). And why on Earth out of all things would they remove this from the infinite list of configurable shortcuts?

I was almost going to file a bug report, but found a new Rename Layer... item in the Layer menu. Of course it is listed in configurable menu shortcut list, so now I have F2 as a shortcut for it:

I found out that Layer Options were removed from the keyboard setup because the very dialog was removed from Photoshop altogether. That makes sense now that you rename layer with a dedicated command and select its color from a popup menu.

So if you had the same problem, now you don’t. And if you haven’t bothered to set up a shortcut to rename a layer, it’s about time to do it: it will save you tons of time.

More on PHP’s “bad design”

In the previous post I was responding to PHP: a fractal of bad design, and I was talking about the main topic. Design that is. But the post also made me smile and shrug my shoulders many times, and I wanted to share why. I’m sorry, but I wasn’t able to find the author’s name anywhere on his site (speaking about design).

What amused me was that many of the discussed problems there are made up. For example, he is talking about this line of code:

@fopen (’http://example.com/not-existing-file', ‘r’);

He writes a whole thing about how it works, and presents every point in his list of things as a surprise. And my reaction is, yeah, that’s obvious for me that PHP would do that, so what exactly is wrong?

Or, he writes:

"6" == " 6", "4.2" == "4.20", and "133" == "0133" and adds “But note that 133 != 0133, because 0133 is octal.

He implies, I guess, that something about this is wrong or unpredictable, but he doesn’t say what, and I really have no idea. I mean, come on, you should know a language’s syntax to write programs in it, right?

Or he explains how global variables work:

Global variables need a global declaration before they can be used. [...] globals can’t even be read without an explicit declaration — PHP will quietly create a local with the same name, instead. I’m not aware of another language with similar scoping issues.

Not a word on what he thinks of as an issue. Isn’t it OK for languages to differ?

I’ve been programming in PHP for some ten years and for most of the things he talks about, it never even occured to me that it was a problem. Also, I didn’t know many of the things he wrote about, because to encounter them you have to be really sloppy. He deliberately writes some messy code (like five nested ?:’s or 2 < "foo") and then complains that PHP does not execute it the way he wanted.

If you don’t know the language really well, at least write a clear and readable code, and it will work fine.

The great design of PHP

The epic post PHP: a fractal of bad design is worth a read. It’s really interesting, especially if you are a PHP programmer. The author of this post deserves a credit for the work he has done, and there’s a lot to learn (though I’ll get to some questionable details next time).

I was thinking about how to approach the design thing he’s talking about. I felt like he was totally missing the point. Probably, PHP’s design is bad from some theoretical, computer science point of view. But it is great from the real life point of view.

The PHP source code for a “hello world” page is literally “hello world”. This is where the design starts, and it’s big. Trivial things are trivial, simple things are simple, then language gets more complex the more you want from it... and one day it gets really complex and you build Wikipedia. It scales smoothly from hello world to that. While there are indeed many quirks in PHP, they are just minor details. But the learning curve thing is a major strength.

In the post, the examples like Wikipedia and Facebook and WordPress are dismissed like they are irrelevant. But it’s no coincidence that they are there. Jeff Atwood poses a question: “If PHP sucks so profoundly, why is it powering so much of the internet?” And I think I know why: because of its great design.

Good design in terms of computer science attracts geeks who usually make tools for geeks. Just look at the list of Python software. I bet my mum haven’t heard of anything in the list. Good real-life design attracts normal people who want to build something for normal people and who desperately want to start building it now. It’s the design of PHP that makes those great products much more likely to happen.

Simple and powerful leads to popular and successful. And for me “popular and successful” is a much better metric of good design than some criteria made-up specifically to make your point.

Earlier Ctrl + ↓