Everything that we know today is based on our past experiences. Our knowledge is limiting what we can create tomorrow.
When we solve a problem, we tend to stick with that solution and keep improving it. That affection prevents alternative discoveries from happening. Alternatives, that weren't possible at the time of our original idea. Alternatives, that have much higher potential in the long run.
Various limitations that are affecting our past tools, will silently keep limiting the potential of our future ones. It's not natural for us to consider our proven solutions as restraints. Well, this isn't a prison made of concrete and steel, but obsolete or incorrect knowledge that we fail to see. And what you can't see, you can't escape.
I joined Jolla in 2012. It took me almost three years to discover my self-imprisonment. Back then I could only work with knowledge withing those walls of mine. I was happy to repeat what had been done before. It didn't use to matter, as anything was always possible before. I was either creating concepts or working without time pressure. It all changed when I started working with Sailfish OS.
I guess it was the immense pressure that finally pitted me against my own knowledge. During these three years, I have questioned majority of what I know. Life of uncertainty and constant doubt has been hard, but at least those walls gave in before I did - ironically only to be replaced by tiredness and loneliness. Abandoning things I've held as facts for many years was a cruel journey. Mainly because I just traded one solitude for another.
Our existing knowledge is our happy place, and it's perfectly understandable to fight for that happiness. They say that ignorance can be a wonderful thing. It's only human to seek comfort through stability and order - until one dies. To me, that's a horrible waste. Loneliness I can deal with.
So remember. The knowledge you have gathered doesn't update itself. If there's something you really care about, you should question everything you know about it. Sure, it might get lonely for a while, but it's imperative that you do.
Because tomorrow will be just like yesterday if you don't.
Thanks for reading and see you in the next post. In the meantime, agree or disagree, debate or shout. Bring it on and spread the word.
A collection of assorted footsteps from the journey in designing an interface for a new mobile operating system. How to create value through design in places others cannot. How to focus on your own design game and avoid competing head-on. How to create emotional responses through engaging design to stay afloat in the ruthless hardware centered mobile landscape.
Tuesday, June 30, 2015
Saturday, June 13, 2015
Tailoring graphical user interfaces for everyday life
When developing a graphical user interface for a product, it's easy
to forget the outside world; the reality that your product will
ultimately face.
It's tempting to downplay the importance of various everyday situations. Mundane, boring and even stupid situations, that have nothing to do with your amazing new product; yet everything to do with how much user attention they require. This common and critical mistake results in a struggle between the product and the environment it's being used in. Below is a simplified example of this conflict (click to enlarge).
The image shows how the environment affects our ability to focus and handle information. The more control we have over the environment we're in, the more demanding interfaces we can cope with.
Mobile and portable devices are widely adopeted because they conform to dynamic and unpredictable qualities of human life. We naturally have a lower barrier toward carrying small devices with us. Therefore a smartphone is more likely to be used inside a taxing situation than a desktop computer.
On the opposite ends of that scale, we can either be fully engaged with the environment, or with the graphical user interface. Even a familiar and simple interface will be problematic in a demanding situation. Like composing an email while outrunning a bear. Similarly, any smartwatch interface feels lethally boring and restrictive, while waiting for another meeting to end (you'd rather tussle a bear). For reference, see the following image (click to enlarge).
Our available time, at any given moment, affects what we consider important. When a situation requires any attention, completing another task will costs you situational control and awareness. The expense amount depending on both interface needs and the task complexity in question. In short, if you text and drive, you'll suck at both. Human multitasking in all its glory.
Therefore it's important for interfaces input requirements to scale accordingly. The problem is that many interfaces today, like Android, iOS and WP, are already beyond their capability to do so, forcing the user to give in. The reason is a devious one. Even if people don't like to carry around tower PCs, they still love the familiar interface logic derived from them. Even though many human interaction methods, that were developed for desktop computing, are far too demanding for the life outside those cubicles they were never meant to leave.
The smaller your product is, the more focused, effortless and fault tolerant the interface needs to be. I know that our work on Sailfish OS is not there yet either, but it's still easier to keep on building it on top of thoughts like these.
A mobile device that fits your life, is valuable. One preventing you from living yours to the fullest, is not.
Thanks for reading and see you in the next post. In the meantime, agree or disagree, debate or shout. Bring it on and spread the word.
It's tempting to downplay the importance of various everyday situations. Mundane, boring and even stupid situations, that have nothing to do with your amazing new product; yet everything to do with how much user attention they require. This common and critical mistake results in a struggle between the product and the environment it's being used in. Below is a simplified example of this conflict (click to enlarge).
The image shows how the environment affects our ability to focus and handle information. The more control we have over the environment we're in, the more demanding interfaces we can cope with.
Mobile and portable devices are widely adopeted because they conform to dynamic and unpredictable qualities of human life. We naturally have a lower barrier toward carrying small devices with us. Therefore a smartphone is more likely to be used inside a taxing situation than a desktop computer.
On the opposite ends of that scale, we can either be fully engaged with the environment, or with the graphical user interface. Even a familiar and simple interface will be problematic in a demanding situation. Like composing an email while outrunning a bear. Similarly, any smartwatch interface feels lethally boring and restrictive, while waiting for another meeting to end (you'd rather tussle a bear). For reference, see the following image (click to enlarge).
Our available time, at any given moment, affects what we consider important. When a situation requires any attention, completing another task will costs you situational control and awareness. The expense amount depending on both interface needs and the task complexity in question. In short, if you text and drive, you'll suck at both. Human multitasking in all its glory.
Therefore it's important for interfaces input requirements to scale accordingly. The problem is that many interfaces today, like Android, iOS and WP, are already beyond their capability to do so, forcing the user to give in. The reason is a devious one. Even if people don't like to carry around tower PCs, they still love the familiar interface logic derived from them. Even though many human interaction methods, that were developed for desktop computing, are far too demanding for the life outside those cubicles they were never meant to leave.
The smaller your product is, the more focused, effortless and fault tolerant the interface needs to be. I know that our work on Sailfish OS is not there yet either, but it's still easier to keep on building it on top of thoughts like these.
A mobile device that fits your life, is valuable. One preventing you from living yours to the fullest, is not.
Thanks for reading and see you in the next post. In the meantime, agree or disagree, debate or shout. Bring it on and spread the word.
Tuesday, June 9, 2015
No more empty smartphone screens

Although, various Windows phones, and a handful of Android devices come equipped with features that make their standby screens appear far less dead. After all, credit must be given where credit is due.
No need for power or home key presses, display double taps or other conscious interactions. The moment they're exposed to the world outside users pocket, both the phone and its user are already one step ahead of everyone else. A digital extension of a human intention.
Sailfish OS also has a similar feature in development we call "Sneak Peek". It's not ready yet, but I've been trying it out for almost one year now. Somehow the feature always carried over software upgrades, up until last week at least. I had to re-flash my phone, turning the feature off for good.
The sudden change in device behavior has left me staring at an empty screen more times than I'd like to admit. Looking and feeling like an idiot.
One step too much
Curiously enough, I realized that all those solutions I mentioned earlier, had one important piece missing. They all focused only on what user might want to see, but ignored where that would lead: what would people do next, after already holding the device in their hand, with the display showing relevant information?
Easy. You either want to interact with it, put it back to your pocket, or set aside on a surface near you.
And the problem with everything we have out there today, is that they all just create an additional state between the display being completely off and fully on. A glance or active screen is shown first, before you can see the lock screen. If you desire to interact with device functions below, you have to first go through that extra screen. This throws away part of the potential gained through anticipating user intentions.
To allow user interaction, it would make more sense to automatically show the lock screen, without any added steps. User would see the same information, intereact with lock screen controls, or continue to unlock their device.
Yes, it would requires some adjustments to how the lock screen behaves. It might be something like these wildly conceptual images, that are created to support this post. Take them for their illustrative value.
Moreover, the appearance is secondary in the long run. How it feels in the daily use becomes much more interesting and valuable quality. At first, it might sound strange for the phone to behave like this, but let's look at what would happen if it did.
The first thing you'll notice, you can get to whatever you're doing a bit faster. People use smartphones over 100 times a day, with majority of those instances starting with manually turning on the display. As the manual part is removed, less attention and accuracy is needed.
Second, the amount of user errors would decrease, because nothing was added. Every gesture and functionality works just the same way. It's the same lock screen, nothing more, nothing less. It's just working with you, not against you.
Worried about accidentally unlocking it? Don't be. Every lock screen has a built in protection mechanism to prevent that. Made famous by that "slide to unlock" slider on the first iPhone. We flick or swipe long enough distance to get past it.
Finally, removing your device from your pocket becomes much more friendlier event.
Just pick up the phone from your pocket and place it on a surface near you. Display will light up to greet you. An accelerometer inside the phone can tell whether you're holding it in your hand, or it's resting on a table. By following that information, it's easy to turn off the display sooner to save power.
Naturally, if the phone is on a table, the same sensor can be used to detect user picking up the device. And for cases you don't want to pick it up, you're just a double tap away from whatever you need.
By now, I'm sure some of you've already wondered why not use black background with colored text and icons on top. Well, it works great if there's no display backlight. If there is, too bad. I illustrated the problem below.
Those liquid crystals that are used to affect the light passing through, cannot block all of the backlight, resulting in gray appearance instead of black. This is very visible at night, inside movie theaters, clubs and ancient dungeons.
Using a background image will simply make the issue less apparent (can be turned off for AMOLED devices to save power). Also, a user selected image is much more personal option compared to someone saying it should always be black.
Making smartphones anticipate our needs is not rocket science. Especially when it comes to the lock screens scenario that we manually go through almost 100 times a day anyway. It's much more about seeing past of our past experiences. If you see through them, and get a taste of what things could be, it's going to be difficult to go back anymore.
You'll soon realize how passive most smartphones are. As if they didn't have the information available to anticipate the most basic thing we do. Once again, you've been staring at an empty screen. Looking and feeling like an idiot.
Welcome to the club.
Thanks for reading and see you in the next post. In the meantime, agree or disagree, debate or shout. Bring it on and spread the word.
Sunday, May 31, 2015
Does the software you use have multiple personalities?
If you paid for it, or got it after signing up for a "free" service, it's a 100% yes. Some just hide it better than others.
The thing splitting a one good personality into several ones, is called business requirements. These requirements serve the existence of the company maintaining the software, and are kept hidden from the end user.
Imagine these requirements as another user next to you (the real end user). This one is just invisible. Naturally, these two users never share the same goals or values, because they're inherently different. Another one is a real person, while another just a set of objectives. This means, that the product has at least two reasons to exist; two separate masters to serve. In the light of my ponderings about good and bad software, this is how business requirements tend to change development focus.
If a lot of code is needed to meet defined business requirements, it will be hard for the company to open source such a software, because it exposes all these questionable things. Not to mention making it dead obvious that a similar value is achievable with much less code elsewhere.
Therefore many companies refrain from open development; convincing themselves into believing these undocumented capabilities are for the good of everyone.
We all want better experiences, but they honestly have to deliver on that promise. There might be temptations to harness software to serve alternative masters, but it only leaves everyone wondering why it's so damn hard to openly develop software.
And why their software still has multiple personalities.
Thanks for reading and see you in the next post. In the meantime, agree or disagree, debate or shout. Bring it on and spread the word.
Tuesday, May 26, 2015
Opinions kill open software
It's happening. Silently, slowly, without exceptions. Dead, gone, deceased. You just don't know it yet.
Some background before proceeding. My previous post, about good and bad software, underlined how important it's for everyone to know why a particular piece of software exists. Especially in FOSS development.
The problem is user expectations. Our past experiences naturally affect our preferences, and we subconciously project them to new software. This pulls developer toward how, away from what the software was created to do. And since we're all unique, it's difficult to see the real reason from our equally subjective viewpoints, steering the software into a direction illustrated below.
The reason is that FOSS users engage much more in software development, when compared to proprietary software users. Everyone knows that much about software, that anything is possible with it. It's a holy grail of every software project to be pursue sophisticated frameworks that support our highly heterogenous user preferences.
You might not realize it, but the price a proprietary software user pays in cash, a FOSS user pays in responsibility. We're all priviledged to have an alternative, and we should respect the reason it exists. Don't neglect or avoid it by suggesting yet another user setting or customization framework. That's always away from what the software can do to everyone.
If FOSS alternatives will ever reach a wider consumer adoption, they'll do so being faster to develop and maintain. By going faster to places a proprietary software is too heavy and cumbersome to go. By helping people to do more, faster, simpler and more reliably. By giving us our time back.
That's why it's imperative that the development is focused. One software can't adapt to seven billion amazing opinions, but seven billion people can adapt to one amazing software.
Some background before proceeding. My previous post, about good and bad software, underlined how important it's for everyone to know why a particular piece of software exists. Especially in FOSS development.
The problem is user expectations. Our past experiences naturally affect our preferences, and we subconciously project them to new software. This pulls developer toward how, away from what the software was created to do. And since we're all unique, it's difficult to see the real reason from our equally subjective viewpoints, steering the software into a direction illustrated below.
The reason is that FOSS users engage much more in software development, when compared to proprietary software users. Everyone knows that much about software, that anything is possible with it. It's a holy grail of every software project to be pursue sophisticated frameworks that support our highly heterogenous user preferences.
You might not realize it, but the price a proprietary software user pays in cash, a FOSS user pays in responsibility. We're all priviledged to have an alternative, and we should respect the reason it exists. Don't neglect or avoid it by suggesting yet another user setting or customization framework. That's always away from what the software can do to everyone.
If FOSS alternatives will ever reach a wider consumer adoption, they'll do so being faster to develop and maintain. By going faster to places a proprietary software is too heavy and cumbersome to go. By helping people to do more, faster, simpler and more reliably. By giving us our time back.
That's why it's imperative that the development is focused. One software can't adapt to seven billion amazing opinions, but seven billion people can adapt to one amazing software.
Thanks for reading and see you in the next post. In the meantime, agree or disagree, debate or shout. Bring it on and spread the word.
Sunday, May 24, 2015
Good and bad software
I'm going to start with an argument.
Software exists because people are lazy; not that it's a bad thing. Throughout the history, it's been one of the greatest sources of ingenuity. A wonderful catalyst for ridding inefficiency.
It all started with a lazy person, defining a set of instructions for a machine, for it to do something people are bad at, and machines fantastic.
Those lines of code, running on a piece of hardware, helped that person to get more work done. Ideally, the time invested in instructing a machine to work for us, is far less in a long run compared to us doing all that work ourselves, impeded by human limitations.
Software exists to use computer's potential on tasks which people struggle with. People simply need to focus on instructing it. Sadly it's the focusing part where things usually take an unexpected turn from the ideal road. Right through the safety rail of professional training. Over and off the cliff of common sense. Straight into the bottomless pit of irrational. I visualized the problem below.
Yes. There are. A lot in fact. However, this one is something everyone can and should understand. It doesn't take a computer science PhD to figure this stuff out. It's especially important for companies whose business depends on software quality. Even more so with startups and small companies.
I'm going to end with an argument.
Your company exists because people are lazy. Make sure your product focuses on helping them, like a good software does.
Software exists because people are lazy; not that it's a bad thing. Throughout the history, it's been one of the greatest sources of ingenuity. A wonderful catalyst for ridding inefficiency.
It all started with a lazy person, defining a set of instructions for a machine, for it to do something people are bad at, and machines fantastic.
Those lines of code, running on a piece of hardware, helped that person to get more work done. Ideally, the time invested in instructing a machine to work for us, is far less in a long run compared to us doing all that work ourselves, impeded by human limitations.
Software exists to use computer's potential on tasks which people struggle with. People simply need to focus on instructing it. Sadly it's the focusing part where things usually take an unexpected turn from the ideal road. Right through the safety rail of professional training. Over and off the cliff of common sense. Straight into the bottomless pit of irrational. I visualized the problem below.
Given that a same amount of people, with equal skillsets, are working on a software project with identical goals, it's more likely that they end up with what I personally think as bad software.
Such software doesn't do what software is supposed to do. If you get stuck on the user interface part, you're missing the reason why people use your product. You have just instructed the machine to play hopscotch with the user, instead solving a user problem. The balance is just way off. Bad instructions, bad software. No amount of excuses change that.
Beautiful, well performing and behaving user interfaces can be built with relatively little amount of code, if you know what you're doing. If not, you easily end up with a complex and overdone interface; a monstrosity that needs even more complex customization options to tame -- or fire to kill, as it depends.
Still, game over.
Becoming blinded and trapped by the user interface iteration loop is very easy. It's the most visible thing for everyone in the project. That's why it's so important to be aware of this danger. Adding more interface easily feels like adding more value. How wrong can people be. You only waste resources on things that:
- end up eating even more resources since you're stuck with maintaining it
- restrict your options for potential devices and businesses in the long run
- distract user from the real value your product offers = less appealing product
Yes. There are. A lot in fact. However, this one is something everyone can and should understand. It doesn't take a computer science PhD to figure this stuff out. It's especially important for companies whose business depends on software quality. Even more so with startups and small companies.
I'm going to end with an argument.
Your company exists because people are lazy. Make sure your product focuses on helping them, like a good software does.
Thanks for reading and see you in the next post. In the meantime, agree or disagree, debate or shout. Bring it on and spread the word.
Thursday, May 14, 2015
What is keeping Sailfish OS alive
![]() |
Image by Jolla |
Be realistically ambitiuos
For the sake of comparison, let's pretend that Jolla chose the strategy everyone expected it to choose: follow iOS and Android to join the mobile OS and smartphone business. Just close your eyes, and picture Jolla offering the same experience what Apple, Samsung and others already do.
Wonderful, here's the thing: that strategy has been perfected by Apple, Google (later Samsung et al.) since 2005. They will keep doing so in the future, without any intentions of slowing down. 7 years later Jolla was ready to compete against industry giants, with the announcement of Sailfish OS.
Enough pretending. Competing with this strategy, against these guys, is like trying to race against a bullet train, with a bicycle, without pedals. You will get nowhere; even if you pretend to. It's utterly silly to think you can beat them in their own game they've rigged beyond recovery.
You'll be spending all your time on things you can't compete with. And since everything you implement has a cost, it's more logical to find a simple solution for all those things that make your product a reality. Move through the mandatory feature list as fast as you can, so that you can save time and effort to use on what, in your vision, makes you relevant.
This is where Microsoft stumbled. WP tried to create value too close to competition, instead of building on top of and strengthening existing ones; those that made Microsoft relevant. In the end WP sabotaged Microsoft's opportunity to not limit its users to stationary computing. Their ambition to build a smartphone OS ended up instead limiting people also on the go. Looks like they're finally fixing this with Windows 10, so let's move on.
Be honest to what you exist for
Three years after the Windows phone launch, Sailfish OS rolled out as a very limited and rough experience. You were all set, if you had enough interest and patience to wade through tutorials, reviews and forum posts. It worked if you knew exactly what you were doing, but it didn't leave any room for user errors. There was hardly any guidance to help user. To be open about things, we shipped it with a beta stamp. Digital pioneers and average consumers alike received their copy, installed on the finest hardware we had access to; a mid-range phone on all accounts. A failure by industry standards.
But the thing is, we're not competing solely within industry standards; things what others already master. We have our minimal solutions for those, but our real business is where others cannot easily go. Either because they're too scared, lack the required vision, or don't really care as long as they can convince people buying their next wave of latest and greatest.
People deserve more natural and focused interfaces than current industry standards require. We need more openness, collaboration and sustainability = a thorough value domain reset. Automation and computing in general are less about the technology, and more about finding a common direction to increase human potential; everyone deserves more time for things that are defining humanity.
What makes Jolla and Sailfish OS relevant, is our reasons to exist in the mobile space, and what our actions stand for in contrast to the competition. And that, ladies and gentlemen, is what keeps Sailfish OS alive. Not what it can directly offer, because it's not much at the moment. There's a mountain of work remaining -- actually -- make that two mountains; the operating system alone is not what you need for your computing tasks. It's merely a start.
We still need apps, more supported services and other natural functionality integration points. They are paramount in making sure Sailfish OS also stays relevant. There's a big functionality debt we owe our community. It's through their passion and trust, that we've given this chance to make a difference.
Respecting that debt would not only be human, but also an exception that this industry sorely needs to change.
Thanks for reading and see you in the next post. In the meantime, agree or disagree, debate or shout. Bring it on and spread the word.
Subscribe to:
Posts (Atom)