This Week in Twitter

  • O. M. G. http://t.co/dboWa7RS #
  • @jevgenidotnet so how should I think about WP8 OS, is it Windows RT with small modifications? Or a third Windows? #
  • Bärenstark @linkedin, obwohl ich klar twitterte, dass die job-mails unerwünscht, unpassend und nicht abbestelbar sind http://t.co/8I9godr3 #
  • @linkedin die Gelegenheit nicht verpassen und gleich unsubsriben, hier kostenlos unsubscriben, nur noch letzte Chance, jetzt unsubscriben! #
  • A racist advertisement in Germany. http://t.co/JQNd1OUZ #
  • @Projektierer @LinkedInDACH yep, seit Wochen auf keine Mails. Dies ist wohl aber eine Ankündigung zu neuen Produkten, separat abzubestellen #
  • Kissing bananas http://t.co/DEt3K8jD #
  • Received hillarious mail notification today (no, this time not from linkedin): you have 0 unread messages in your inbox. #

Powered by Twitter Tools

Nokia Lumia 920

I’m still undecisive about usability qualities of the new Win8 UI, but I can’t deny how amazingly synergetic it is and how consistently Microsoft is implementing it. I’ve written about it in another post, but I’ll repeat again.

I believe, each major mobile platform has a main UI paradigm. iPhone was first on the market and could choose the easiest one – skeuomorphism. Just put a cheap bitmap image looking like expensive physical material on your UI, and use the patented flick gesture with a rubber effect, and you’ve radically improved your UX.

Android is hard to describe, but for me, it is a play of light and shadows. They have sparks, and glow, and neon light. It is more like magic, putting your fingertips into the pure energy, and weaving strings of light out of it. And yeah, when I mean Android, I mean at least the version 4 of it. What happened before, was very similar to your typical desktop Linux (GNOME) interface. A lot of good looking effects meaning nothing and not coordinated by any single concept.

Microsoft has chosen the elegance of pure vector graphic (and typography) and pure colors. Hence, extra large font sizes. Therefore, emphazis on zooming and 3D animations. The don’t-call-it-Metro interface has purity as paradigm.

And now, when I call the new Lumia amazingly synergetic, I mean its pure color of the plastic part, matching to the main theme of the UI. And this is quite unique so far. Look at the iPhone – it is piece of shiny glass; something not very similar to the typical iPhone UI elements, which oft look like plastic, or polished gemstones, or leather. Look at the most Android phones. Only Sony has managed to produce something resembling the Android’s starry night (I mean their tablet).

I believe, it is extremely hard to achieve such a UX consistency across the realms (software and hardware), and even across the companies indeed, and so I applause and envy Microsoft team for this success.

Product Management Dilemma

When two persons have a different opinion about some topic, they need to find something they both can agree to. Sometimes a win-win situation is possible, so that a new solution will be invented suiting both parties. But sometimes, a compomise has to be taken. A compromise typically means that neither the one nor the other person is 100% happy with the result. Therefore, I believe compomises prevent products to achieve exceptionally high levels of quality and integrity.

The problem is, to avoid compromises in 100% of cases, you have to be either a) a totalitarian asshole leaving no creative freedom for the others, or b) the CEO. Or both (aka Steve Jobs).

Which I am not. So what I’m gonna do?..

Open Source: cui prodest?

Why open source is actually good?

I was hoping to find an answer from the Free Software Foundation web site, as well as from opensource.org. The best answer I could find was, it is good because it is free, and free is always good.

Now, when applying the five whys technique one often stops when reached something axiomatic, which don’t need to be questioned. I personally don’t like having too much axioms. The more axioms you have, the easier you can be manipulated. I have these two unconditional stoppers of the “5 whys” chain: “Because of Love” and “Because of Life”. Many other reasons, Freedom included, have to endure my scrutiny first.

Thus I’ve decided to write down everything I know about practical consequences of free and open source software, and to understand where they are leading us, as a society. And the results surprised me.

According to FSF, free software is

  • free to use
  • free to study and to change source code
  • free to redistribute
  • and free to base your own work on it.

Freedom of usage

Having programming languages and libraries for free allows students to learn and practice more technologies, leading to more skilled students. Same applies to professionals who want to evolve in their free time. Using OSS for free is often the only way for them to improve their skill set. While improving skillset leads to a better salary for the individual, more skilled programmers on the market will lower the general salary level for skilled workers in the IT industry. In turn, this leads to accelerated innovation, because IT companies can hire more skilled workers cheaper, and therefore develop more new products. Another consequence of this “teach yourself for free” effect is that skilled programmers are getting younger. Thus, average age of IT companies is getting lower, and it means they tend to be organized less bureaucratically, are less process-oriented and more business results oriented, and can therefore create huge market disruptions, sometimes. But it also means that the young and often naive employees tend to have less possibilities to protect themselves against manipulative employers.

Similar effects could have been applied to text, image, video, and music editors. Aspiring writers, designers, photographers, musicians and movie directors could start practicing for free and therefore generate more skilled and younger professionals on the corresponding market. As far as I know, this doesn’t happen. I believe, the reason is that movie directors, musicians and photographers need much more (at least hardware, but also people, money etc) to train themselves so that the cost of software doesn’t play a big role. Writers don’t need any software to practice and can do well with a paper and a pen. And designers prefer using Adobe Photoshop. The most applicable effect of OSS to other creative jobs I’m aware of is 3D and FX rendering (with the Blender).

Free Internet tools (web browsers, e-mail and NNTP clients, etc) helped to create the reach of the Internet. The Internet has radically changed our society in a million of different ways, some good, some bad. This is a topic for another post, if not topic for a huge research.

Free of charge software has created competition for closed source software. Therefore, new forms of closed source software appeared or became more popular: trial versions, free basic version with non-free Pro versions, free ad-financed apps, etc. This has decreased the average software price, which means that earning money in software business became more complicated. It is harder to be successful with the simple “my awesome app – your money”, one has to spend more time trying and inventing different monetization schemes. This also means that an average user can afford more paid apps, and buying new apps more often. So this is yet another factor accelerating innovation in the IT industry.

In the world of non-free operating systems licensed per installation, it was only natural to scale up. Free operating systems have made scaling out more attractive. This has ruined or at least severely damaged the business of super-computer manufacturers; commodity hardware manufacturers have benefited. I haven’t checked this, but I think, geographically, it means that East Asian hardware manufacturers have benefited from that, and Western super-computer manufacturers have lost. Increased usage of commodity hardware means also that standard hardware and OSes can be used, and therefore any software running on PC can be run on the servers. This should have reduced the average cost of server software. At the same time, system administration cost increased, because more physical server units must be managed. Partially due to this problem, the cloud business model has appeared. Additionally, clouds have increased the elasticity of hosting, allowing internet startups to start with a very small investment into hosting. Which in turn has further accelerated innovation rate in the Internet.

In the most organizations, buying software that individual employees need for their job, has to follow some specific process. The process overhead often prevents from usage of new, much more productive apps. Free software can be installed and used instantly. This increases average productivity of employees, at least in some kinds of businesses. At the same time, it can decrease security of those businesses, because free software is typically installed and configured by the users themselves, who may or may not have necessary experience and information about the appropriate security measures.

Some companies don’t earn enough money, and a subset of those don’t earn enough money because of some systematic issues, such as too much bureaucracy, badly designed products, making products nobody needs, etc. Normally, it is in the best interests of society when such rotten companies file for bankruptcy. But, usage of free software might mask such companies, because it reduces production costs, and allows such companies continue to exist in a sort of zombie mode. Not only such companies waste energy, hosting hardware, and other resources, and the life time of their workers, but they also inhibit innovation by capturing human resources working in there for no good reason. On the other hand, usage of free software means that startups can reach break-even sooner, which reduces some of their risks.

Due to large amounts of free open source and free closed source apps, computer users became used to this free-of-charge-edness. Their expectation is to pay for a couple of things (hardware, internet access) and then to consume for free. This expectation increases in my opinion the amount of piracy, including piracy of movies, music and books. Some people don’t pay for media, not because the price is too high, but because, deep inside, it just feels wrong to them.

Free software is often developed without a plan to earn (direct) money from it. Often it starts with the idea of satisfying my own needs, and then it will be make public in hope it will help somebody else. This means that fame ambitions are the only motivation to make the app more appealing to more users. Besides, who can afford developing an app without a direct monetary award? Often, they are students or young professionals, who don’t have enough experience to make a great user experience. Or, this might be experienced professionals, who write free software as a hobby, and therefore cannot spent enough time on it. Often, free software is being created in a bazar style, without any proper organization or team building, so that the user interface is created by anybody in team (usually a programmer), not by a UI professional. This leads to a usually worse user experience comparing to commercial software.

Bad user experience not only improves sales of some closed-source applications (GIMP vs. Adobe Photoshop is a good example), but it also increases total cost of ownership. While your typical closed-source software comes with a no-brainer installer, starts after installation automatically, and allows you to use some of its main use cases in the first 5 minutes after installation, the typical experience with the free open source software is first fixing your build environment, then building the app, then optionally fixing build errors, then installing the app, then trying to find where it has been installed. And when it runs, you try to do some simple first steps, but you can’t, and then you consult the documentation, and it is absent, and then you google your problem, and find one forum entry, and then you open the configuration file, and read all its settings, and understand the architecture of the app, and then try to change settings, and don’t have success. And then download a plugin, and read how to install it, and fuck-yeah-I-like-it, FIX your BUILD ENVIRONMENT again, and build it, and install it, and yeah-baby-gimme-more, find where its configuration file is, and reading the plugin configuration, and configuring it, and then being able to make your very first step makes you ecstatic and after another month or so you can be as productive with your free software as you are with a closed-source software after the first 5 minutes.

Using some free software is a research project. Using close-source alternative is twenty bucks.

Recently, more and more free software is paying more attention to usability as well as to user experience, so that this is changing. I’m not sure why is it happening, but I suppose the OSS community is influenced by a lot of Internet and mobile startups who monetize with ads and therefore are extremely careful about and attentive to UX issues. But this influence, if any, can only be on some moral and ideology levels, and is therefore not a very strong motivator. Until some new strong economical motivation appears, we have to expect that free software remains to be on average less usable than commercial one.

Free to study and change source code

Forty years ago, computer users have got bare hardware and were supposed to write all their software, including an operating system, and the apps, all by themselves. Today, only tiny fraction of users care about source code. Understandably, this freedom doesn’t make any significant impact on our society.

Reading source code of others can teach beginners to use better programming style. This means, more skilled professionals, and younger skilled professionals.  Therefore, more innovations in IT. This also means that the quality of average programming style can increase, and something like worldwide common programming style can emerge. This would make changing existing software cheaper, and thus increase the speed of mature product development.

Reading source code of frameworks you are using helps to use them properly. In a closed-source situation, you would just ask the vendor, if some behavior is strange or undocumented. Unfortunately, not every user of closed-source frameworks is in a position being able to ask technical questions and getting appropriate technical support. Sometimes it is issue of money, sometimes it is issue of too much users, and too little technical stuff at the vendor. This means, on average, free frameworks can be used better and lead to better software than closed source. But positive effects of source code availability can be eliminated due to absence or low quality of documentation. The best API documentation I’ve ever seen in my life is WinAPI reference in the MSDN library. Which is understandable, because WinAPI users cannot revert to the source code to check out things.

Changing source code of frameworks you are using allows you to fix bugs yourself and to be independent from the vendor. Well, until you decide to upgrade your copy to a new version. This also shifts the responsibilities, that is, OSS authors don’t feel themselves responsible even for the blocker bugs, unless they hit them personally. Often, they argue that obtaining their software for free liberates them also from any moral obligations, and if their users don’t want to spend their time fixing it, they always could pay money to authors to fix it. Usually, the latter condition is not very appealing to the user, because authors often don’t have enough capacity to handle serious paid fixes or improvements in the software, in a timely and professional manner. In contrary to this, many closed-source vendors would happily fix or adapt their software to user’s needs, and have enough capacity and project experience to handle it. As a result for free software, it takes more efforts of in-house software developers to use it, and allows for less possibilities to buy software development, than closed source software. This is one of the factors for having cheap software developers in-house, because if you have a lot of cheap developers, you can also use more free of charge products. The more expensive and scarce in-house IT resources are, the higher is the probability of using closed-source solutions, because it is then cheaper.

Free to redistribute

This is perhaps a relict from the times where software was distributed on physical media, so that giving your own disk to your friend was easier for him than obtaining the software from its author. Presently, the only advantage of this freedom for the user I can see is the avoiding being tracked as a user by the author. Which would endanger the only strong motivation of writing free software (fame of a successful product), and is therefore often contradicted with special clauses in the license agreement.

Free to base your own work on it

Freedom to fork existing projects is self-protection of open source. It ensures continued development of a product, if its original author turned to be a compromise-less jerk and is driving it into wrong direction. Or if the authors have been hired and have to commercialize the software. It also makes OSS maintainers to be more attentive to the requests and proposals of other contributors, out of fear to be forked and to lose contributors. As a result, OSS can be more stable and robust on the market.

In theory, this freedom also means you can create competition to the author of this component. For example by taking some free codec and improving it. In practice, there are not so many reasons to allow this for free, therefore this right will be exploited, for example, for virality of the GPL license.

As a result, a little more OSS is produced; and much more commercial products are produced, which are strictly speaking illegal due to OSS license constraints. In both cases, more software is produced, because large parts of code can be reused, for free. Have I already mentioned that OSS accelerates innovations in the IT industry?

Another consequence is that there is much less variety in software architectures of different products, because using specific frameworks and technologies also limits the range of architectures. For example, even though spitting HTML into stdout (GCI anyone?) can be done in just any of several hundreds programming languages (except HTML), most server-side code is written in PHP, Java, .NET, Ruby, or Python. Websites written on Smalltalk, Lisp, Erlang or Eiffel also exist, but most programmers don’t care, because the popular technologies have so many frameworks that can be used that it is not feasible to base your architecture on using Smalltalk. Even such a bright and straightforward idea as using JavaScript on the server-side, to unify development programming languages in frontend and backend, has only recently become popular.

By the way, Node.js is also a good example of how this freedom works in practice; it re-uses an OSS component intended to be used in web browsers and written by Google engineers, to run on the server side. The best what can happen to a thing you’ve made is that it is successfully used in a context you’ve never envisioned it in.

Summary

Open source has accelerated innovation rate of IT industry and helped to create the Internet as we know it, and is still doing it in many different ways.

It is fascinating to see how abstract principles of a small group of software freedom fanatics hit the real world, and many principles have waned, and others have suddenly resonated, and the whole industry is shifted and markets are disrupted, and lives of everybody on Earth is changed, due to the rize of the Internet.

This Week in Twitter

Powered by Twitter Tools

Apple and Samsung

At Apple, we value originality and innovation and pour
our lives into making the best products on earth.
Tim Cook
What has been will be again, what has been done will be 
done again; there is nothing new under the sun.
Ecclesiastes

What is originality and innovation? Is it possible, for a human being, to create something that has never been before? Is an original and innovative product always better? Another question: is such a product always good for the market? And for the whole society? How many innovative products society needs per decade? Is creating an original product significantly more complicated than creating a product based on someone else’s ideas? What is the cost structure of Apple products, and what percent of the price is contributed to the originality? Are products of Apple original and innovative? How the originality is scoped? Is it “something that has never been done in the universe?” or “something that has never been done on the Earth?” Or “never been done in the USA?” Or something the product designer has yet never done before? Why is this scope? Another question: is suing other companies an original and innovative activity, or how else spending tons of money and time for suing Samsung is compiant to the Apple’s values?

I don’t like CE products of Samsung and don’t own any. I also don’t like CE products of Apple and don’t own any. I just believe, if somebody’s product is selling, and selling good, and is hitting the nerve and finding loyal customers, it should be illegal to preventing the corresponding company from selling this product. Because it will piss off a lot of product users. And pissing off people should be illegal. Especially if it is done out of such vague and abstract principles as originality and innovation.

This Week in Twitter

  • @lucidchart has the best UI for creating diagrams I've ever used. #
  • This is what it takes to participate in 10 years anniversary of StayFriends :) http://t.co/1wvFoSsg #
  • Erfurter Kreativität: fast food restaurant "Hunger?", friseur "Kopf-Arbeit", Laden "Tinte & Toner clever tanken" #
  • Noch, restaurant Mundlandung und ein Linkshänder-Laden #
  • I miss the possibility to do the same on a web page :) http://t.co/qKM8yeuT #

Powered by Twitter Tools

Tools, tools, tools

At this point I’ve started to look for a software conceptual design IDE. This is the most complete list of tools I’ve found so far: http://c2.com/cgi/wiki?GuiPrototypingTools. I’ve already checked out perhaps 30% of them. It seems that most tools focus on the following three features:

  • Create wireframes.
  • With a very little effort, skin them to appear to be an (ugly) design mockup. Typically there are Windows XP and Web skins.
  • With a very little effort, make them interactive and allow reviewers to “use” them in some kind of viewer, or in the web browser.

I’m confused.

Not only because it is very far from what I’m looking for, but because quite a lot of tools totally focus only on these features, with only minimal variations. Are my requirements that uncommon? What I believe I must be able to do is the following:

  • Define a workflow, for example by using a flowchart diagram. And yes, not just a half-hearted drag and drop flowchart support, but a really streamlined and comfortable way, as seen on lucidchart. My goal is to be able to draw a nice-looking workflow, in size of a Powerpoint slide, in less than 5 minutes. The bottleneck of the process should be me thinking about what workflow step must be the next one, and not dragging some boxes around or trying to straighten ugly curvy lines.
  • For each workflow step, define a mockup screen. Ideally, by double-clicking on the box, so that the mockup is linked with the workflow step. Yes, supporting all the usual graphic editor stuff, at least on the Paint.Net level. And yes, please show a small thumbnail of my mockup inside of the box. Oh, and by the way, couldn’t this editor have some specialized features for creating dummy screens based on screenshots, like for example detecting the font family, size and color from the screenshot, vectorizing already rendered bitmap texts, and allowing to change them effortlessly?
  • With a very little effort, make a wireframe from my mockup and allow me to enter explanations and define actions.

I know, I know, it is not the usual custom. But I believe it works much better for me when I draft my screen in Paint.net, so that I can see the actual content, actual photos, actual fully-designed frame (obtained by screenshoting the current web page), rather than operating with empty emotion-less wires and frames. On the other hand, no matter how much time I invest in my mockup, the result looks quite unprofessional. It is not a design mockup, and I’m not a designer. It is good enough for me to grasp the basic user experience (I have a good imagination), but it is not always good for presentation, because without the typical wireframe look it can be easily confused with a bad design mockup.