Tuesday, October 28, 2014

What's the sand in your sandbox?

I was picking up my son from the daycare when I realized something. It took me for a round trip to the days I started at Jolla.

It was early July 2012. I was very excited about everything I had learned about the company over those few months preceding my hire. I was looking at non-hierarchical and self-organized group of talented people; teeming of can-do-attitude, and plenty of enthusiasm to match. With very lean ways of working, Jolla was about to play ball with the big guys. It felt amazing, and I was all game.

I'm a person who lives to do things. I love to study things by taking them apart. Every disassembled object has a story to tell, and those stories feed my obsession to learn and understand how everything works. When other kids at daycare played with their toys, I had a bag full of broken household appliances and power tools to disassemble. As a courtesy of my parents. Otherwise I would've taken apart something that actually worked, much to the horror of my daycare teacher.

Countless dismantled things later, Jolla was the perfect do-all-you-can buffet for me. It was very informal and open 24/7. Everything in that buffet was optimized for doing things together. So many things to take apart an learn from. We all had done mobile operating system work before. This time we just had to do it with a fraction of the manpower, without any hierarchy and management overhead. And the best way to do that, is getting your hands dirty with it. Explore, play, take stuff apart and and put back together. Don't be afraid of mistakes, instead love them for guiding you.

I realized Sailfish OS was the sand in my sandbox. Days on end, I went in to make sense out of things. It was important to work closely with developers, so there was just us and the sand. No matter how long it took, we would keep our hands deep in the sand. It was wonderful that nobody cared if I had sand all over me. Learning and understanding was more important.

I climbed out of my car and closed the door. My son was waiting me at the daycare gate with a big smile - all covered in sand. He doesn't mind the mess. Because it doesn't qualify as one for him. Instead it represents an exiting interaction; a freedom to do anything he wishes. It dawned on me that some people have learned to avoid getting sand on them. For those, I have a secret to share: you can unlearn it.

Learn to tolerate that the sand is messy. It's the purpose of the sand to be all over the place. It's up to you to mold and craft it to whatever you wish. No right or wrong way exist. The only rule there is: you can't make great products without getting sand on yourself. Your ability to do amazing things is only backed up by your relationship with the sand.

So take a look at your sandbox. Whatever it is that sand represents for you, get to know it again. Don't be afraid to get some of it on yourself. Take a look how kids do it. They don't see a mess. They see fun.

So should you. It's time to reconnect with the sand again, just like back in your childhood. Smile follows naturally.

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.

Monday, October 27, 2014

Just asking - a new image series launched

Just asked myself,

Why not to squeeze some of the points I make in this blog, into images that are.. say.. more approachable? I thought it would be a good idea. So I ran along with it and made a few over the weekend.

These two (just added 2 more) are just the beginning of a wider series of images, that either ask a simple question or challenge something in the current state of the smartphone industry. I really want to do this just to see if it's something worth continuing.

As always, the goal is to increase the awareness of more natural user interfaces, through the work we've already done for Sailfish OS at Jolla.



Here's the link in case the Picasa flash plugin crashed and burned.

Anyway, let me know how these work out for you. Any comments or image ideas are also very welcomed, so I can crank out more - or stop immediately. If you already haven't, this is the perfect time to visit the comment section.

Fantastic. Let's do this, since we don't try in Finland.

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, October 23, 2014

Responsible product development. Family style.

When creating something, you sign a responsibility pact.

By respecting that pact, your creation has all the potential in the world. Just like a child has.

The same parenting guideline applies equally for new products. You have already developed a deep understanding between your child, and it's your responsibility to make everyone understand and respect that. A small child cannot yet communicate that. Neither can a new product.

It doesn't matter how many of you there are, you're all mutual parents. The whole company is.

You all have valuable information related to the well-being and success of your child. If you share that information with new people becoming involved in your child's life, everyone greatly benefits from that. Especially your child.

The challenging part is, that most of the time, it's people you don't see. People in meetings you never attend. People in cities you never visit. People in companies you've never heard off. They all have expectations for that potential you've been meticulously nurturing.

Therefore it's important that everyone of you understands their role as a parent. All of those new external expectations can be perfect opportunities for your child.

Just remember to ask and also listen if your child wants to play hockey or piano. Break down those expectations to see how they fit the personality and traits of your child. Don't just blindly decide and demand something.

Because that breaks children, instead of helping them to grow. Don't expect opportunities to create a perfect child for you. That's just horribly wrong.

Treat those expectations as goals. Because they'll help your child to grow; to become stronger by overcoming challenges. However, it works only as long as it's the child who's overcoming them. Everyone else around is just a safety net, allowing graceful failing, and encouraging to retry. It's about honesty toward your child and ones potential.

If you solve a puzzle for your child, it's you who did it. No matter how hard you claim otherwise.

So don't make dishonest promises to anyone. Those just end up hurting both the growth of your child, and your role as a parent. Don't ask your child to skip elementary school in favor of dreaming about university.

People will understand if you openly explain your family values to them. What makes your child behave like one does. Also, if your child suffers from a permanent illness, it's only good if people involved are aware of it.

In the same way, every product has their shortcomings and weaknesses. Be open about them to others, and avoid planning the future on those weaknesses. A lifetime of failure will break children as well.

So remember to listen to your children.

Don't force them into being something they're not. Nobody benefits from that.

Because if you do, I sincerely hope that the responsibility pact in question was not signed in blood.

Our children deserve better.

Both in family life and product development.

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.

Wednesday, October 22, 2014

What's wrong with multiple home screens

Quite a bit. Hold on to something.

If thinking critically, what does multiple home screens really add? Aside from multiple screens off course. Is there any explanation for their existence?

I hear this even in my sleep already: "Everyone thinks they're amazing / Everyone is used to them." But, that's just repeating an opinion. It doesn't explain why do people need them?

Another common one is: "Statistics tell us that people like products with multiple home screens in them." With that logic, you can say that statistically people also like seats with feces in them, because they use bathrooms several times a day. Sorry, people would be happier without the poo being involved if it would be possible.

This as well: "We have done extensive consumer studies to prove it's a must feature to have." Sigh. On paper, you can make people like poo just by asking them the right questions.

This comes up every now and then: "It's for everyone to personalize their devices." I'm pretty sure the device is already a personal one, and what user does with it, will make it even more so. Also, there's countless other ways to make the interface a personal one.

But the winner is: "What is this heresy I hear! From the beginning of time as we know it, home screen content has always been arranged in horizontal pages!" From the beginning of 2007. But then why is pretty much every other content browsed in vertical direction? Web pages, content streams, call histories, messages and gallery grids. All vertically arranged.

So really. Why does a smartphone need multiple horizontally arranged home screens? How do they make a smartphone smarter? What is the user need they fulfill?

Anyone?

I think it's actually the other way around. A smartphone would be smarter if it didn't have multiple home screens. The main issue is in the thinking that adding more, automatically equals a better product. And as usual, people are blind to the opposite.

It's a better product, that equals more. Let's try it out.

You give a user seven home screens, instead of five. Did it make a single home screen any better? Is it easier to move or find things between seven home screens? Are seven screens easier to decorate with widgets? Is it easier to find nice widgets that don't look horrible? Is it more personal solution? Did the product become smarter than before? Does it free system resources for actual user tasks?

Nope.

Then try removing all but one home screen. Make that single remaining home screen better. Make it smarter. So that it adapts better to what user is actually doing with the device, removing the need to juggle between multiple home screens. Because everything you did and worked on, is found from the same home screen, everything becomes much faster. You launched a music player, and suddenly the controls are also there. You arrived at work and your email account summary is greeting you on your home screen. Suddenly the behavior feels more helpful and smarter, since you can do more by actually doing less.

Do you spot a pattern? Better, equals more.

There's even the age-old saying about quality trumping quantity. Well, marketing was clearly invented as an counter-argument. Because smart is hard to do. Just adding more is easy. A hammer with three heads instead of a single good one: a great idea everyone can boldly stand behind of. And with a good marketing campaign, nobody notices it's heavy as hell and unbalanced beyond practical. The rendering looks amazing, though.

So compared to doing smart and meaningful things, marketing is dirt cheap. Guess which path big manufacturers favor?

So let's try one more time: Does adding more home screens make a product easier to sell?

Hell yes it does!

If I buy a hammer, I want a better hammer than I had before. One that allows me to work faster, more efficiently and comfortably, not to forget improved safety. I don't want to buy an inferior hammer, just because it's easier to sell to other people; who at the end of the day, would also prefer a better hammer with a single good head, instead of having the option for multiple ones.

That means the product was intentionally made to perform poorly, just to make it sell more. Since the modular-wonder-hammer has the option to add more heads to it, the potential to develop a single good head is lost for the sake of a nonsense feature.

If Sailfish OS would have multiple home screens next to each other, it wouldn't be possible to have cover actions as explained in my previous post. It would mean that the ability for user to interact with tasks would be reduced.

For the sake of having a modular-wonder-hammer, that's heavy as hell and unbalanced beyond practical.

To be honest with all of you. Making a better product is really hard and painful. It's because the industry around you keeps repeating how more equals better. Especially when the rendering looks awesome.

The dumbest thing I've heard.

In the smartphone industry.

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, October 21, 2014

Replacing widgets with minimized applications

One of the most unique aspects of Sailfish OS, are active application covers.

They're essentially small windows on your Home screen. Each one of them represents a minimized application (not currently in full-screen state). The same function is found from any desktop OS, in form of a task bar or an application dock, that show all your applications that are running in the background.

As you know, there's no separate task bar or switcher in Sailfish OS. Only one Home screen. These covers show relevant and legible information, and allow user to perform important actions directly from the home screen.

On the first encounter, they kind of come across like widgets. And it's no wonder, since they actually pull double duty. Primarily, they're used to maximize an application to full-screen, but also allow user to interact with common features without the need of entering the app.

When compared to for example Android home screen counterparts, similarities start to run shallow. Widgets on Android are not in the same place where active applications are shown, so there's no real connection between the two. Even if they also allow using common features, there's a problem with doing it with buttons. I made a simulated example below, about Sailfish OS having separate tappable areas.

Accurately clicking a correct physical location on the display is easy in a desktop environment, the birthplace of widgets. After all, mousing on a stable surface is a breeze. But when you're walking or otherwise active, the overall movement of your body easily transfers all the way to your hands, making it harder to tap the correct button. And just because this interaction method uses our fingers to emulate a mouse cursor, it's already by definition an inferior approach for mobile interfaces that are not used in stable environments.

Sailfish OS solves this by not using taps for cover actions at all. Instead, user flicks the cover horizontally to perform an action. This makes it irrelevant where you tap or flick a cover. Both tap and flick touch events can use the entire Cover area as a target. This makes a big difference in the accuracy requirement for performing an action.

Since it's the flick direction (left or right) that defines the action (media player play/pause and skip song for example), it naturally limits the maximum amount of actions into two. And since tapping and flicking to left or right all have a different effects on how, and in which order, your hand muscles behave; it's easier for our body to associate them for different things. Again, the design both supports and takes advantage of our unique capabilities.

Whether you use all the potential through these gestures or not, is up to you. Each of us takes tools we use to different levels of efficiency. Some push them all the way to their limits, while others are comfortable in casual use. Both are equally correct.

However there shouldn't be separate locations for these two ways of use. In Android, the requirement for widgets comes from the poor multi-tasking performance, as well as system complexity. It's nicer to have multiple home screens filled with widgets, where user can perform frequent tasks. However, that's just adding more complexity by fixing the wrong problem.

By solving how minimized applications allow different degrees of user focus, and reduce the need to enter an application, the need for a separate location for widgets is removed. It both makes the OS simpler and leaner, and greatly increases task handling speed, since various user needs can fulfilled in the same location.

Responding to user required level of efficiency and control.

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.

Friday, October 17, 2014

Calm before the storm. Looking back and forward.

Already a month has passed. It's challenging to put in words, how great it's been to organize one's head through writing. I'm finally getting a closure for some thoughts, archiving others, and kicking out the rest. With a sweep of a keyboard; I'm freeing space for new ideas, and energy to revisit the old ones that deserve it.

Additionally, it makes me happy to hear most of you have found this blog to be useful/fun to read. The support and feedback has been great and helpful. Thank you so much.

The last week has been a silent one, though. During that, I've been on an autumn holiday with my loved ones. It's been a personal retreat from things I'm expected to do; and to dedicate time on things dear to me. Even if Sailfish OS has a very special place in my heart, it's consuming work.

Never the less, it's been a fun week off. We made an outdoor movie theater for my oldest daughter and her birthday guests. Everyone had equally fun in watching a movie outside in the woods, as we did while devicing the set for it. It was a great experience to sit in the dark and nippy autumn weather; on top of camping mattresses with blankets and pillows. Accompanied by both forest and plush animals. Not to forget the usual movie goers assorted treats.

Another personal post-kids-bedtime project I've been sinking some hours in, was a small mobile speaker for Jolla phone. It's a sturdy plywood housing, that also has a place for the phone. It's aimed to entertain the back seat passengers, during some unwieldy drives we Finns have to put up with.

The last one is more elusive project. Still partially in the dark and rough around edges, but it definitely has potential. For a long time now, it's the one thing I've become really excited about. However, I want to be sure about few things before making any bigger announcements. And this time around, I don't need a company tied to it. Just people with open minds, big hearts, helpful hands, and few some odd hours to spare for a good fun.

Before that, there's a few more posts coming. And a lot more work to get done.

Have a relaxing weekend and see you next week.

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.

Friday, October 10, 2014

Multi-touch and bigger screens

Brace for disclaimer!

Note that this has nothing to do with Jolla. People have been asking me about how could Sailfish OS work on larger touch screens, so here it is folks. Some theoretical design thoughts about Sailfish OS user experience, on a bigger size. This is important for the sake of understanding a mobile operating system design and the effects different touch screen sizes have on it.

Fantastic, let's move on.

Multi-touch makes an excellent parallel subject, when talking about larger touch interfaces. I've personally grown to dislike majority of multi-touch implementations because they seem to be driven by technical capability to track, rather than supporting the way we use our hands.

So what should multi-touch be then?

Let's use another tool example to dig deeper. I like comparing things to tools because of their simple, efficient and purposeful interfaces.

Think about a hammer and a nail. The task is to hammer a nail into a piece of wood. Your other hand holds the nail while the other one hammers it in. When breaking that down, we can recognize multiple smaller operations inside that task. Pinching a nail while holding it perpendicular to the target surface, is one. Whacking it in with a hammer in your other hand, is another. This is a simple multi-touch use case from the real life. With two types of multi-touch.

Huh?

Yes, I think there's two kinds of multi-touch. The first type is related to the task itself. You need to use both hands simultaneously for the same task to succeed. Hold the nail and use the hammer. The second type is related to individual hand operations inside that task. Pinching a nail with at least two fingers, and gripping a hammer with up to five. The latter is the most common use of multi-touch to implement a pinch/spread-to-zoom for example.

Ok, two types of multi-touch. Two-handed task type and multi-fingered operation type. There is no need to discuss about how many fingers you need to do something, because then you're focusing on wrong things. And I feel many existing interfaces are limited to only the operation type, because they're not focused on user tasks, but in something completely different. Not to mention forgetting totally what our hands are capable of.

So, I ended up with this definition because there wasn't really anything tangible behind existing multi-touch interfaces, in the mobile OS space. At least I haven't ran into anything that made sense. What I've found abundantly, though, is a lot of complexity that multi-touch can help to add. It's very easy by introducing more and more fingers on the screen, and mapping that to do yet another thing in the software. The amount of needed fingers has lately gotten kind of out of hand. Pun intended.

If you need more than 1 finger to move around in your OS, you should seriously look at the interface architecture and feature priorities.

"But with multi-touch , I could have an OS feature to directly alter orbits of celestial objects and.."

No. Stop it. You'd be still browsing, watching videos and gaming. And the only celestial object you know is Starbucks. Stop looking at increasing OS features, and pay more attention to enhancing user potential.

Alright, apologies for the slow intro. This is where some illustrations comes into play, and hopefully make more sense of the multitasking stuff above.

Sailfish OS was designed to be less dependent on display sizes than other mobile operating systems. This is because the most common user interactions are not depending on the user handedness, hand size or thumb reach, so the gesture based interface naturally allowed one-handed use of a smartphone sized devices.

"Hah, you can't really use a huge device comfortably with one hand, so your one-handed use benefit is lost then?"

Yes and no. The same way that Sailfish OS made a small interface fit into a single hand, it makes any larger interfaces fit two. This opens new ways to interact with larger devices due to the analog nature of touch gestures.

We should also understand that people are very liberal in how they use and hold devices in real life environments. In commute, at home or during a holiday trip. Most of the time, it's resting against something, and simply hold in place with one hand.

This a two hands grip, while using a full-screen application. This is a precondition to completing a task. My tool comparison is holding a nail in the other hand and a hammer in another.

The left (or right, it doesn't matter) hand performs the Peek gesture to expose the Home screen. The hand with the nail is placing it against the wood surface.

While keeping finger on the screen, user is able to see what three other applications are doing in Home screen. The nail is ready to be hammered in.

Without releasing the left thumb, user performs a cover action to play/pause/skip a song with the right hand as an example. Releasing left thumb after interacting with any active cover, would keep user in the application 1 (first image). That's a fast way to look into Home (just like on the phone), perform an action (enabled by the larger screen) and get back to the app. All without even really leaving it.

Alternatively, if user would tap another application cover, or trigger a cover action that requires a full-screen state, the screen real-estate would be divided between the two. The nail has been hammered in, and user is back to default state that precedes the next task.

This behavior is a natural progression of Sailfish OS Peek gesture and how application windows are handled. Only the support for the other hand and screen division was added. Both hands performed an individual operation that alone, completed a single task (pinch a nail and hold/carry a hammer). When they're performed together, a different task is completed (a piece of wood is attached to another). Just like we do so many things with in our physical environment. I wanted to focus on illustrating the task type, because there are countless examples about the single hand multi-touch, the operation type.

The value in all of this, is that the entire interaction sequence is built into the same application usage behavior, without any additional windowing modes or mechanisms that need to be separately activated and used. It supports the way we work and enhances our natural potential. After all, you don't turn your hand into a separate mode when you're driving nails into planks of wood. No, it's the same hand, all the time.

Similarly, when you need to reach something from a tool drawer, you will not physically enter the drawer yourself. You wouldn't fit. Instead, you stand next to it, open the desired drawer and pick up the tool you needed, before closing it again. The Sailfish OS peek gesture is doing exactly the same on larger screens because of multi-touch. Exposing another location (Home/events = drawer) with the other hand, to see what's there and perform a task (trigger an action = take a tool) with another. All without actually going to that location.

That's what multi-touch should be.

Something that focuses on enhancing our potential, instead of enhancing features we are required to use.

Button based tablet operating systems (excluding Win 8 etc) are not going to do something like that any time soon. Not only because they treat active applications in a different way (as second class citizens), but it would be challenging to implement the behavior into the way how buttons work. Also the button locations do not support ergonomic use of individual hands when gripping the device from the bezel. On the other hand, the sliding gesture over the screen edge is very natural to perform, because it happens where your thumb is most comfortable any given time.

This conventional button approach, that many Android devices use, exhibit another problem in enforcing a hand preference in controlling the device. As you can see from the image above, the left hand is not able to reach notifications on the right, and similarly the right hand struggles in reaching Home, back and task switcher buttons on the left.

It's not about changing the interface between a phone and a tablet. Tasks are anyway the same. It's how the two-handed use is enhancing our potential through the increased touch screen area.

Don't try fitting an existing multi-touch solution into your interface, but think how an interface can handle both one- and two-handed use.

Then, the rest will find their own places naturally.

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.

Wednesday, October 8, 2014

Together tomorrow

Dear Jolla users and enthusiasts, Jolla Ltd and its partners.

Who I am, or where I work, means nothing for what I’m about to say. On the other hand, what I believe in and what I choose to do, means everything.

I believe in this community and I'm asking it to act.

If someone can shape the smartphone industry, it’s all of us. We have already begun. Big things have happened thanks to all of you.

Let’s forget about Jolla for a moment. This is not about Jolla. Jolla is a small company with limited resources. I’m tired of both hearing and repeating it. It’s going to stop today.

It doesn't change the fact, that our community enabled the possibility we have today. And together, we either make or break that opportunity to give this stagnated industry a run for its money.

I see desperation in the smartphone industry. Same things are repeated and recycled. Over and over again. Big manufacturers are locked in an eternal patent war. A game of sudden death. Each focusing on getting better hardware cheaper. What it actually means, is selling compromised hardware for the user, with the same software experience as last time. A lot of corners are cut in that process. Only rivaled by the ridiculous amount of marketing that goes into covering it all up. Operators and retailers are trying to somehow come by.

Meanwhile, the end user is looking from the sidelines. Everything is badly derailed. It’s not sustainable. It’s not what tomorrow should be.

And we've known it for a long time. We all challenged that.

I'd like to point out that it's very rare for a community of this size, to have two real products shipping in several regions. A phone and an operating system.

Unfortunately, that is playing by the wrong rules.

It's the exceptional bunch of people behind it what matters. They all had real courage to do new things. They all bravely stood behind new ideas and promoted them. And their message was:

"We want to buy tools that fit what we do, not what the industry wants us to do."

It's essential to understand how this industry works. What are the rules it plays by. Because those rules aren't for people. They’re rules for business. Rules how to make profit for companies. The smartphone industry has long since stopped being user driven. Why else would you have to buy a new phone every six months.

Therefore our own style of play has to focus on user values. There is only one rope to pull. And only a single direction to pull it. We need to get noticed as individuals with different things we need a smartphone for, not a distraction from them.

Whatever the reasons was for all of you to get involved in this movement, I bet it was much more personal than any hardware specification. Every manufacturer is focused on how to distract users from the fact, that a smartphone should be useful in your everyday lives, instead of use up our lives.

A phone is an important tool that should comfortably fit to the center of our daily chores, instead of being your daily chore.

Stand tall. There's nothing to apologize. Be proud of what we've achieved together. Be open about how you feel in this community and help others to clear out common misunderstandings. Many simply don't know what this community is about. They don't have any idea what Sailfish OS even is? Why does it exist in the first place? What was the story behind its creation?

Nearly all of you know it very well, and can pass it on. Please do. Even if it's all work in progress. Our community, OS and available hardware; are all glimpses of what tomorrow could be.

The choice is ours. What do we all choose to do.

Smartphone manufacturers will not magically become aware of our values. We need to do something about it. That includes everyone.

Everyone can affect what Sailfish OS will be tomorrow. Because when working with the smartphone industry, we all need to be very clear about one thing.

Sailfish OS exists to serve user needs.

User has the control of what happens on their devices. If we don't make that clear, the OS will surely, as others before it, slowly turn into an industry tool, instead of being your tool. It will gradually stop fitting to the center of your daily chores by turning into your daily chore. For the same old stubborn game to continue. That is the inevitable effect that the industry has on undefended products.

It's caused by the way this industry plays. It's gotten blind to alternatives. Forcing everything it comes in contact with to submit to its rules. It needs help in finding other ways to play. Other ways to create value and also profit from it.

You're all a living proof that it can be done.

What this industry needs is a wake-up call. Nobody else will do it on your behalf. Either we keep doing what we do also tomorrow, or we don't.

Simple as that.

If you agree, grab that rope and give it a good pull.

#PhoneIndustryWakeup

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, October 7, 2014

Why develop apps for Sailfish

I get asked this a lot so I did a post about it.

Simple really.

A Sailfish application has a much higher UX potential than any other platform counterpart. The whole operating system is designed around an unobstructed and efficient use of applications. What you as a user want to do.

In addition to harmonized gesture usage, Sailfish apps have also unique UX pattern called cover actions, that's missing from all other platforms. These allow you to interact with a common application feature, directly from your home screen without entering that app.

Why not use Android apps. Well, even though Android apps run on Sailfish OS, they don't always feel right because of the button based navigation at the screen bottom. So each native Sailfish application removes another Android app dependency and makes the user experience more complete overall.

Native apps are also much faster to load, use far less disk space and memory than Android apps. Every aspect of a Sailfish application is designed the mobile use in mind. Because when you're on the move, you are limited by four things.

A limited screen size, a limited battery capacity, a limited storage and limited processing power. But the biggest limitation is our own inability to focus on multiple things at the same time.

There is a live and active world out there. A ton of things happening everywhere. Both lovely and dangerous things. When you use your smartphone, you want to go in fast and get out faster. The world and people close you are the thing you don't want to miss out. Especially when it's about being part of something really wonderful, or avoiding something really painful.

That's why Sailfish OS and Silica apps work like they do. They're intended for mobile use, leaner in many ways than the competition. And what they can do, will get you there and back before anything else out there. So you wouldn't miss out the important things.

Now, fire up the SDK and let's get started.

Creating a Sailfish apps


Start from an app idea. The best ideas arise out from a problem cause. You don't want to do more on the go, but less by doing the right things.

Don't look at a desktop applications, or other mobile applications for that matter. Start from a concrete problem. Don't start off from a feature. Look into why that feature is needed. Process your ideas before you sketch out anything. Leave the huge ideas and projects for desktop environment.

Only after you've done that, start coding.

Look at example projects from github, and also shamelessly use both the Silica references and component gallery project that comes with the SDK. Most of the time, you don't need to write your own components. Unless that's the main point. But remember, from the user perspective, how your app fits the platform UX, is more important than how nice graphics you can make or transitions you can code.

Naturally, it's much faster to use existing blocks and focus on solving a problem instead of solving an interface. Also, Jolla will focus on keeping those components working. If our apps are based on them, they’re much more resistant to UI breakages caused by any system update. Apps done with Sailfish Silica components also load faster and scale nicer to different resolutions.

As much as it's fun, avoid innovating on top of already new interface paradigm. It will not help your users. They've just learned a new way to use their devices. Please reinforce that.

Prioritize. Promote the main app functionality. Allow favorites and some history to help access frequently used content. Make your app excellent at the thing it does. Not mediocre at everything another app does. Follow common UI patterns. Keep your graphic assets to minimum to reduce app loading time, memory usage and disk space, and overall improve the app performance. Users have an ambience for their devices, don't intentionally block it, even if you don't personally like it.

Sometimes you have to build something from scratch.

Then, make it look like it fits. Use styles from the Silica theme object. Avoid hard-coding colors, pixel or font sizes. Because if taken to another screen resolution, your app interface will break. Build it to last. Silica component gallery sources and provided references are again your friends to see how components internals look like. Pay attention to UX details and avoid common pitfalls.

Finally, spend time on performance optimization. Load your pages and content asynchronously if possible, to avoid blocking the UI and gesture use. Profiler is your friend. Rince and repeat. No matter what the app does, if it’s not smooth, it’s not very pleasant to use.

Also, don't do things alone. Do it together. Ask from the guy next to you.

There's a lot of people among you who know their stuff and can help. Don't get blocked by lack of support. And many people don't. As a result, Sailfish OS has a huge ratio of community created apps. Apps created by self-organized individuals, out of their own free will. They work on them in their spare time to allow us all make some things easier on the go.

They do it regardless of any payment mechanism in the Jolla store and part of those apps are not even accepted, because some features of the OS are not considered stable yet to hook in by third party apps.

Our community set up their own repository to overcome that. So that there would be an open alternative market to get apps easily from.

You don't do something like that if you don't believe in what you're doing. They believe that having native apps matter. And I agree.

My hat's off to all of you.

Thank you for putting your though and dedication in something you believe in.

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.

Friday, October 3, 2014

Keep moving forward

When launching a new product, you have already analyzed existing products and planned the best place to operate from. Due to customer base size, you compensate the overall offering by focusing hard on areas other products fail to excel in.

This justifies your claim to the land for now. Other manufacturers have to work much harder to offset your offering in these neglected areas.

But they most likely have already started to plan their move. Their problem is your strength in area, so you've got some time. But the last thing you want to be doing is to sit down and admire the scenery.

First and foremost, you need to move forward.

If you're not moving forward, you're staying still; but since the competition will be always moving forward, it makes the time spent on sitting still, look like moving backwards from the consumer perspective.

What causes a company to stay still? Most of the time it's caused by obscure company targets, but the biggest threat usually comes from within. We're all sources of potential disaster. Everybody might know that there's a need to sustain the movement.

But instead, somebody gets an idea.


Most of the time, ideas are harmless, abundant and pop up everywhere. Everyone has them and there's always good ones in the lot. The problem with ideas is usually in both what affected to the idea creation and how we treat that idea.

How an idea is processed.

The most common type of an idea is a borrowed one. And the cheapest too, in many ways. It's easy to take something that already exist and swallow it as a whole. Hope that nobody notices. However, if everything is copied from existing products, there's no way they fit together and form an enjoyable product to use. At least don't market it as such.


To make it easy for you in a long term, take the idea apart, see what's inside that makes the idea valuable (how does the idea create value with the end user). Grab that, and move on.

From an idea, salvage only what you can carry. Don't carry a car wreck if you only need a spare fuse.

By doing that, the idea is easier to fit to everything around it, so that you don't fit your product into the new idea you had/found/borrowed. That's insane amount of work. You don't want to do that when you need to advance.

Treat all ideas as means to expand towards a new areas, not to move your whole camp. Remember to strip ideas down, so you don't have to deal with any of that dead weight. Then, look at those areas (cloud storage as an example) and see how you can replicate the end result and value that competing products create, but do it from your direction. Do it with your tools and ways.

It's much easier for you, and it will reinforce and harden your existing product. The idea will work together with other ideas.


This is what moving forward means. Moving without risking your foothold. Because the direction you approach an area, is on the opposite side from the competition perspective, and it will be difficult for them to come knocking hard on your doorstep. Creating value is not patented. Creating it with their way usually is.

Having your own direction to look at things, solve problems and empower user, builds on top of your existing strength. You appear moving without leaving the place you struck down your flag. And the longer you keep doing this, the deeper to the ground the pole goes.

But

Sometimes things don't work out like planned. An idea slips past. It doesn't get properly dissected and analyzed. If you end up integrating the unprocessed idea into your product, you'll be adding all that dead weight of the car wreck as well.

Even if you just needed that spare fuse.

It can sometimes be intentional. It can be driven by someone who thinks the car wreck plays an important role in the user experience. Or that the user experience is not relevant, and the wreck is welcomed to stay. Horrible things are set in motion. It usually starts with these words.

"Taking just what you need is not enough"

It's no joke folks. Fear it like the Plague. When you hear those words, things are about to take an irreversible turn to the fiery purgatory. A new entry will be written in the book of atrocities, under the Eternal torment chapter.

The idea has become more important than reaching the value it represents.

And the idea, at the end, will consume you, your product and everyone else working with it. I tried to make as accurate image as I could, of an unprocessed idea gone bad, so you can avoid it when you see it.

Behold.


Still, hyperbole aside. Process your ideas, treat them as ways to enter new areas from your direction and stop integrating dead weight.

Carrying dead weight is stupid.

What makes things unsustainable is the complexity and unnecessary amount of code it introduces. It will be there forever and you just have to deal with it. Maintain it, fix it and love it.

Unconditionally. Look at the previous picture. Make piece with it and give it a kiss.

If you're a developer working with that idea, or next to it, be afraid. Be very very afraid. You're not going to be moving anytime soon.

And when you finally nudge into motion, with all that weight you've picked up and maintained over the years, your product will be extremely complicated. It had to overcome unnecessary software complexity, horrible legacy, and also bypass and re-route countless user flows to hide it all. For what?

Good luck quickly entering any new areas or responding to business opportunities. Even a team of seasoned software exorcists will not be able to mop up that stuff anymore.

Finally, after a hard lifetime of slowly pushing a software behemoth like that forward, you'll probably ask yourself, and your thousands of in-house brethren: Why didn't we just take what we needed?

Something as simple as a spare fuse, can make a difference between moving forward or staying still.

Make sure that everybody in your company understands that.

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.