The Post-Mac Interface
medium.com
medium.com
This is a fairly timeless sentiment. Even more ubiquitous is looking back and laughing at just how primitive formerly-sufficient technology was. You'd think we'd know by now to just not have this thought anymore!
I'm not talking about stuff you can't get to run faster. If people had the same kind of care they had in the 80s and 90s, the software would be incredibly fast. But these days they can be more careless.
Sometimes it's a good thing, as things ship faster and frameworks are more expressive. Other times, though, it's a PITA. Like when half the time we upgrade just to run the ton of bloatware from different vendors on the web / multitasking OSes at a decent speed. Chrome is usually the biggest hog on my machine. Or like when Apple's iOS keeps making the iPhone slower with every version, until you're practically forced to upgrade. Is it really that hard to make an OS which hardly does any major multitasking from getting slower and slower with every release? One almost wonders if they do it on purpose ;-)
The changes which have actually made a difference to my computing experience over the last decade were the arrival of affordable SSDs and a jump upward in LCD pixel density.
Everything is just...adequate. People don't log on to an older machine and lament how slow it is anymore, they don't balk at how huge the new hard drives are, and consumer-grade disk speeds havent gone up since 7200rpms were introduced. Video hardware is pretty much the only technology in most computers that still has reason to march on, because game developers can always add higher textures and cooler shaders.
Furthermore, while people aren't really after bigger screens, getting to a point where a laptop or desktop has similar DPI to a smartphone would require vastly higher resolutions for which there isn't the technology yet.
Almost nothing I want to do on computers runs fast enough for me, and I'm too stupid to invent good algorithms. But I haven't given up on solving hard problems, so naturally I will look around and see machines incapable of even getting started.
Maybe, at some point, we will come up with a use-case that needs more compute that what we currently have, but for most people's current usecase, compute is not the limiting factor.
I could literally eat a 1000X speed increase without blinking.
I think everyone else could too. The difference isn't about speed, but about quality of interaction.
Today's minimal UIs are a good impedance match for the limited cycles available. iOS was particularly good at leading the way on this, creating a UI that was relatively undemanding of raw cycles but still created an unexpectedly immersive experience.
A big part of that was the move from type-and-point to drag-and-tap. The tactile mode, the skeuomorphism, and the portability and instant access compensated for having to squeeze the UI into a tiny screen.
It felt like a more responsive experience even though it was quite a bit slower and more rationed than equivalent interaction on a full-sized desktop.
That's still true today. You can get stuff done on a tablet, but the most efficient and productive UIs pre-ration the affordances. A desktop is much more flexible/general and gives you much more visual bandwidth.
If you apply this idea to hypothetical 1000X hardware, you won't get more of the same but faster - you'll get completely new modes of interaction, which will likely combine the immediacy of touch with the high bandwidth of desktop interaction, and take them much further than anything available today.
It's possible to imagine all kinds of science fiction experiences. The reality will probably still be a surprise.
Even so - the point is really that today's users feel like they're doing everything they want, because UIs are designed without affordances that would be slow and frustrating given today's hardware.
That will change with faster hardware and new designs, and phone UIs will seem as quaint as a 720 x 350 monochrome desktop PC screen running DOS.
Very few hard requirements are valuable today for most users: battery lifetime, hd video for skype/facetime. And maybe SSD, which are now large and cheap enough for people to switch, and get back the bliss of instantaneous reaction again. Other than that no important task will require more than a core 2 duo. They won't saturate Excel (which was not long ago still single core only). In the case they really do, that spreadsheet is probably worth enough to buy a full fledge MBP.
on Windows: http://superuser.com/questions/565347/how-does-windows-limit...
On Linux: https://wiki.archlinux.org/index.php/CPU_frequency_scaling
You can also play with the BIOS, according to https://en.wikipedia.org/wiki/Underclocking
Computing isn't a limiting factor in almost anything we do (I occasionally code and test on a raspberrypi) but we do notice and appreciate the improvements that performance bring. Even naive users notice.
Try to encode high-resolution 10bit RGB 444 video and stream it to the internet. While playing a AAA game on the same machine. Try to get the latency as low as possible and make sure the video is smooth, without artifacts on the stream.
This is the kind of problem a lot of folks are trying to solve right now and the current hardware is barely good enough to keep up...and that's with adding highly specialized add-on cards.
Try emulating Sega ST-V games on your machine -- and realize quickly that accurate emulation is a matter of clock speed over most other factors...and which has mostly slowed down since the Intel C2Q era.
When you provide compute power/bandwidth/whatever, someone will find a need for it.
As technology becomes more centralized, the computing power of your phone or laptop becomes much less important than the power of Google's and Amazon's data centers. Your devices essentially become clients for computation done in the cloud.
Technological advancements generally don't require increases in the client's computing power anymore.
Siri, Google Now, or Cortana are on the verge of becoming something quite useful. Hopefully, all three. Voice as a user interface is perfect for many tasks:
I use Siri all the time with Apple Music: https://h4labs.wordpress.com/2015/07/31/apple-musics-killer-...
Someday soon, we'll even use voice recognition to help write code:
https://www.extrahop.com/blog/2014/programming-by-voice-stay...
That one of those things that are going to be down to personal preference. Personally I don't see voice as a suitable interface for anything. I get that for some minor tasks voice is going to be fast, but for larger workflows voice isn't a fast input or feedback method. If you don't have a screen in front of you, you'll need to keep a mental image of your actions, which seems to just make things harder. If you do have a screen then I don't get why you wouldn't have a keyboard and mouse to.
Honestly I just don't want to talk to my computer (or phone), I don't see it as an efficient input device. I still haven't tried Windows 10, but when I do the first thing I will be looking for is a way to make Cortana disappear. It's creepy as hell and not how I want to use a computer. Mostly is seems like a technology we implement be science fiction says we should.
Arguably there's are cases where voice is better, simply because it really is the only option, car stereos and navigation for example. It's really the only safe option.
* Play top songs from 2010
* Play some indie rock music
* Play Rihanna's most popular song
* Play this month's top songs
Aside poor voice recognition, even after it got the input right, outcome was terrible.Think about saying: Siri: Play the best song from Justin Bieber.
And maybe being a bit disappointed that it is not quite as awesome as, say, a Led Zeppelin song...
In 2015, when I see and use software that doesn't subtly prompt the user to undo actions for a short period of time after an interaction I just shake my head.
It's such an easy way to reduce customer service complaints it's ridiculous. Empirically, with the companies I have consulted, 'ridiculous' often means 20-40% instant reduction of complaints.
Subtly prompting is not enough, keeping a recycle bin or undo-stack is much preferable. The android photo app is a great example of this. By sliding right or left you move to the next/previous photo. By sliding the photo up you delete it and then move to the next photo! The only notification of this is a subtle prompt at the bottom of the screen: "Photo deleted - Undo?"
I gave my tablet to my mom to browse through photos, guess what she did to browse to the next photo: swipe up. She didn't notice the subtle prompt at the bottom of the screen and ended up deleting half of my photos before she noticed it, by then it was too late as the undo only worked one step back. Luckily i had the photos stored elsewhere also.
Especially as when you're lying down the phone can switch between landscape and portrait seemingly randomly, and suddenly the exact same action for scrolling becomes delete
Oh but i would like it so much if it did. There would be no need for --dry-run options on commands, and it would be much easier to test command-line software and do exploratory learning.
I think it would be a great usability improvement. Even if it were "only" on a file-system change level. And even if weren't always enabled, like, maybe make it so you have to first "begin" a file-system transaction to be able to roll it back if you don't like the changes you did. Imagine something like:
$ begin-tx
tx$ ./some-script-i-am-not-sure-works-properly
tx$ # Check if everything looks good.
tx$ # In case everything went good:
tx$ Ctrl+D # ...or "commit" to end the transaction.
tx$ # Or, in case i see something went wrong:
tx$ Ctrl+X # ...or "abort" to roll back the changes.
$
(Disclaimer: maybe something like this already exists, is widely supported, and i've just been doing it wrong the whole time.)Strangely, the only command-line software where i feel i can do exploratory learning, instead of always having to resort to the man pages, is git. With git, even if i'm making the most destructive history rewriting with `git filter-branch`, i know that if i screw up i can always run `git reflog` and checkout some ref that i know was OK.
Anyone who's ever fat-fingered an rm command will disagree with you there.
Your comment reeks of some kind of "brogrammer" machismo and it makes me irrationally angry.
By what measure? Cause it sure isn't widespread end user adoption…
If anyone from Apple is reading this, not that you've got two empty spots on either side of the up arrow. The other one would be fine for emoji ;-)
To open an emoji menu in OS X (10.10 or later IIRC), just focus on a text input and hit ^ + ⌘ + spacebar. You can also search for other unicode characters. "⌘" is a little tricky to find, since it's named "place of interest marker" or something like that.
OS X doesn't yet have Siri, but it does have Dictation. I assume that when Siri replaces Dictation, the typical keyboard shortcuts for toggling it will stay the same: double-tapping fn or ⌘.
The Windows 10 UI also seems to follow this logic and seems to have ditched the idea to show any apparent hierarchy in the sub menus of the control panels. Particularly in full screen mode.
I can't tell if it is because I am used to deal with GUIs that have a clear hierarchy that this design upsets me, or if it is simply because it is badly designed. I guess the acid test is whether a kid can find his way comfortably.
So application are old apps and apps are new applications.
Depends on how many songs have DRM on them I guess. It's certainly not true for iTunes shows and movies
Sign me up, can't stand all the pointing-and-clicking.
However. The shell, vim, tiling window managers, keyboard navigation plugins for the browser only seem to go so far and really only are an ideal interface for programming, reading, writing, and manipulating data.
To work on audio, images, or even use many web apps I have to accept a less fluid interface which is spatially laid out with visual elements representing actions I might take. There are hot keys but 1. They're usually not sensibly laid out and 2. they don't compose, so I have no choice but to dig around interfaces (which tend to be flat and modeless.)
It seems like I should be able to manipulate image or musical data in the fluid comfortable conposable hands off way I can approach programming tasks or even creative programming but the tools just aren't there. There's no real high level that I've seen interaction language for say.. Music or graphics. Such that there is no vim for music.
When I edit Clojure code for example in vim with vim-exp or paredit I'm not editing text.. I feel like I'm able to navigate and edit a structure that my editor and I both have a shared understanding of. A structure with a clear interaction language and representation. Working with graphics is a pain because I feel that I'm manipulating the artifacts rather than controlling inputs into a process. And while music creation software has come a long way there is a lot of visual noise, buttons that represent actions, and skeumorphic elements rather than a clean interaction language. I still prefer to at least begin most of my music working with hardware sequencers because they're focused and discrete.
There are some great tools working with Sound. (SuperCollider, Overtone) but those are programming environments more so than interactive ones.
I want to be able to describe part of an idea, supply some rough parameters and get some immediate feedback as to what that might look or sound like.. With the option of using whatever data I have at hand as an input. Then I want to be able to adjust those parameters, possibly even making their values a function of some other elements I've already made, and when I'm happy with it I'd then want to be able to select over, edit, and build off of the objects I've created.
Buttons that advertise actions are just noise to me.. I want the entire screen just to be feedback as to the state of my project and the action that I'm constructing.
Drag and drop.. Is a drag.. Why am I carrying icons across a computer screen? Why am I performing virtual manual labor? Copy and paste is a little better but I want to see what it is that I've grabbed before I place it. I want to be able to paste in multiple places and edit them all at once. And I want to be able to describe rather than having to indicate where I want things to go and how I want them to change.
All the "best" interfaces for creative work begin with the assumption that the user is going to point at things or drag their finger across a touch screen, hot keys are there for power users, but they mostly provide quick access to a pallete of isolated and uncomposable actions where you modify the artifacts in steps moving it closer to your vision.
Wouldn't it be nicer to modify the transformation you want to apply in steps?
Poking things, whether with a finger or a mouse pointer is almost certainly not the pinnacle of UI. It's an emulation extension of things people do with their hands. (Draw a picture with a pencil, cut and splice tape, pencil notes onto sheet music.) Lots of where and not enough what.
Lots of showing the computer what you want done, or really doing it manually with the provided tools, rather than telling the machine what to do or describing what you want.
The speech recognition and natural language processing work that's being done is promising. Human languages can be written as well as spoken though. (And written with a lot less ambiguity.)
I'm going to keep clinging to my array of general purpose buttons that I've built muscle memory for and do what I can to make tools for it. I feel very strongly that the interactive picture book is not an actual improvement on language based interfaces though. It's different and it's a recent development based on recent technology, but it's really a separate thing altogether even though society is chasing the trend and talking about it as though it is the best man-machine interface we have to date.
The keyboard sucks. It gives you RSI, it's big, it's noisy. But when you know it you know it. You can go in any of 101 different directions instantaneously when using it as an array of buttons, or when using it to actually type.. Well it's infinite. No features ever need to get dropped because their button was wasting space on the screen. Nothing has to waste space on the screen. You can read the doc, refer back to it when needed, memorize what you need and discard the rest, maybe peruse it periodically to update your software.
Well that's my 11 cents. Rant over. I have to confess to being one of those people with a display approaching the size of a desk (that I have no desire to ever touch for any reason).