Why Should You Learn Machine Learning

In the end of 80ies and early 90ies, the topics of fourth generation programming languages and genetic algorithms were very popular in mass media. We had read in the magazines that software developers would become obsolete, because users could create their programs themselves using 4GL, or else AI systems would soon be created that would extend themselves. By that time, I’ve learned my first programming languages, was about to choose my subject in the university; and therefore had doubts about job perspectives in software development.

Fortunately (or not), Steve Jobs and Bill Gates have popularized the graphical user interfaces by around that time, so that this first AI wave calmed down (or returned to its academic roots), because software development became less about finding an answer to a question, but more about displaying windows, buttons, menus and textboxes. Computer games’ focus has shifted from “what exactly you are doing” to “how cool is looks like”. Internet has changed from the source of scientific or personal information to a ingenious marketing tool and became a thing about pictures, graphic design and neuromarketing.

But, if you are a software developer and have not yet realized that you need to teach yourself machine learning, you should be concerned about your job. Because machine learning is coming and it is the next logical step of losing the full control about your software.

First, we’ve lost the control about exact machine instructions put in our program, and gave it up to the compilers. Next, we’ve lost the control about memory management and gave it up to the garbage collector. Next, we’ve partially lost the control about the order of execution and gave it up to event loops, multithreading, lambda expressions, and other tools. With machine learning, we will lose control about the business logic.

In the classic computer programming, we were trained for the situation when the desired business logic is exactly known and specified beforehand. Our task was to implement the specification as exact as possible. And in the first decades of software development practice, there were enough useful problems that could be specified with more or less acceptable efforts. Remember, the first computers were used for ballistic calculations. Having all formulae already invented by the scientist, the programming task at hand had a perfect specification.

Now, we want to go to the areas, where creating a specification is impossible, or too expensive, or just not the optimal course of action.

We will take fraud detection as example. Let’s say we have data about payment transactions of some payment system, and want to detect criminal activity.

A possible non-machine learning approach would include establishing some set of rules for fraud detection, based on common sense. For example, some limit on the transfer sum, above of that the transaction gets suspicious. Also, transactions from different geographical locations within some short period of time are suspicious, etc.

One obvious limitation of this approach is that the alarm thresholds are based on common sense, so that the objective quality of the fraud detection is highly dependent on how good the subjective common sense of its developers reflects the reality.

Another obvious limitation of the common-sense approach is that such a rule system cannot be infinitely complex. Humans can comprehend only a limited amount of rules at once, so that they usually stop having defined 5 or 7 rules; and see a system with 20 rules as “very complex” and a system with 100 rules as “we need a whole new department to make sense what is really going on here”. For comparison, Square, Inc is using a machine learning algorithm for fraud detection based on (my conservative guess) over 3000 rules (not mentioning that they can re-tune these rules automatically every day or more often).

It is even harder for human to comprehend possible interplay between the rules. A typical geo-based rule should usually fire for distance D and time period T, but not in the public holidays season (as many people travel in this time), but even in this season it must still fire if the amount is above M, if the recipient is a registered merchant, or above the amount P, if the recipient is a private person, but it still must not fire, if the money holder had already did similar money transfers one year before and that transfer was not marked as a fraud, but it must still fire if any automatic currency conversion is taking place… At some point, a classic software developer will raise her arms and declare herself out of the game. Usually, she will then create a generic business rule engine and assert that business guys will have to configure the system with all their chaotic business rules. Which doesn’t solve the problem, just shifts it from one department to the other.

Now, remember the Shannon-Hartley theorem? Me neither, but the main thing about it was that there is a difference between the information – the useful signal that is valued by the receiver – and merely the data, the stream of zeros and ones in some particular format. The fraud detection issue can be seen as an information extraction problem. Somewhere in the transaction data, the information is hidden from our eyes, signalizing criminal activity. We as humans have practical limits extracting this information. Machine learning, if done correctly, is a possibility to extract and to evaluate more information from data.

Classifiers in machine learning are algorithms that, based on a set of features (or attributes) of some event or object, try to predict its class, for example “benign payment” or “fraud”.

No matter what algorithm is used, the procedure is roughly the same. First, we prepare a training set of several (often at least 1000, the more the better) labeled events or objects, called the examples. “Labeled” means, for each of those examples, we already know the right answer. Then, we feed the classifier algorithm with the examples, and it trains itself. The particularities depend on exact algorithm, but what all algorithms are basically trying to do is to recognize how exactly the features are related to the class, and to construct a mathematical model that can convert any combination of input examples to the class. Often, the algorithms are not extremely complicated to understand, for example, they might try to count how often one of the features appears in one class and then in another class; or they might start with a more or less random limit for a rule, and then start to move it, every time counting the number of right predictions (the accuracy) and changing the direction when accuracy is getting worse. Unfortunately, not a single algorithm author cares about the learning curve of his users so that most of algorithm descriptions include some hardcore-looking math, even when it is not strictly necessary.

Finally, a trained classifier is ready. You can now pass unlabeled examples to it, and it will predict their classes. Some classifiers are nice and can even tell you how sure they are (like, 30% chance it is a benign payment and 70% chance it is a fraud), so that you can implement different warning levels depending on their confidence.

A huge disadvantage of machine learning (and welcome to the rant part of this post): only some of the classifiers can be logically understood by a human being. Often, they are only some probability distributions, or hundreds of decision trees, so that while it is theoretically possible, for a given input example, to work through the formulas with the pen and paper and to get the same result as the classifier did, but it would take a lot of time and won’t necessarily bring you a deep understanding of its logic, so that practically, it is not possible to explain classifiers. This means, sometimes you pass to the classifier an example, where you as a human can clearly see it is a fraud, and then get the class “benign” from the it, and you, like, “what the hell? is it not obviously a fraud case? And now what? How can I fix it?”.

I suppose, one could try to train a second classifier giving the wrongly predicted examples more weight in its training set, and then combine results of both classifiers using some ensemble methods, but I haven’t tried it yet. I haven’t found any solution to this problem in the books or training courses. Currently, most of the time you have to accept that the world is imperfect and to move on.

And generally, machine learning is still in a very half-backed state, at least in Python and R.

Another typical problem of contemporary machine learning, when teaching classifiers and providing them with too many features, or features in a wrong format, the classifying algorithms can easily become fragile. Typically, they don’t even try to communicate to you that they are overwhelmed, because they can’t even detect that. Most of them have still an academic software quality, so that they don’t have too much of precondition checking, strong typing, proper error handling and reporting, proper logging and other things that we accustomed to when using production-grade software. That’s why most of machine learning experts agree that currently, most of the time is getting spent on the process they call feature engineering, and I call “random tinkering with the features until the black box of the classifying algorithm suddenly starts producing usable results.”

But well, if you have luck or, more likely, after having invested a lot of time for feature engineering, you will get a well trained algorithm capable of accurately classifying most of the examples from its training set. You calculate its accuracy and are very impressed by some high number, like, 98% of right predictions.

Then you deploy it to production, and are bummed by something like 60% accuracy in the real conditions.

It is called overfitting and is a birth mark problem of many contemporary algorithms – they tend to believe that the (obviously limited) training set contains all possible combinations of values and underestimate training for combinations not present in the set. A procedure is developed by statisticians to overcome this, called cross-validation, which increases the training time of your algorithm by factor 5 to 20, but as a result giving you more accurate accuracy. In the example above, your algorithm would earn something like 64% accuracy after the cross-validation, so you are at least not badly surprised when running it in production.

Modern improved algorithms such as random forest have a built-in protection against overfitting, so I think this whole problem is an intermittent issue of the quickly developing tech and we will forget about it in a year or so.

I also have the feeling that machine learning frameworks authors consider themselves done as soon as a trained classifier is created and evaluated. Preparing and using it in production is not considered as a worthy task. As a result, my first rollout of a classifier had produced predictions that were worse than even the random guessing. After weeks of lost time, the problem has been found. To train the classifier, I’ve written an SQL query and stored my training set into a CSV file. This is obviously not acceptable for production, so I have reimplemented the code in Python. Unfortunately, it has been reimplemented in a different way, meaning that one of the features was encoded not in the same format as the format used during the training phase. The classifier has not produced any warnings and simply “predicted” garbage.

Another problem is that most algorithms cannot be trained incrementally. If you have 300 features, have spent weeks to train your algorithm, and want now to add the 301st feature, you will have to re-train the classifier using all 301 features, even though the relationships between the first 300 features hasn’t changed.

I think, there are more rants about the machine learning frameworks to come. But, at the same time, things in this area change astonishingly rapidly. I don’t even have time to try out that new shiny interesting thing announced every week. Its like driving bicycle on an autobahn. Some very big players have been secretly working in this area for 8 years and more, and now they are coming out, and you realize, a) how much more advanced they are compared to you, b) that all internet business will soon be separated by those who could implement and monetize big data, and those who was left behind, and c) I think, machine learning will be implemented as built-in statements in mainstream languages, in the next five years.

Summarizing, even the contemporary state-of-the-art machine learning has the advantages that are too significant to ignore:

– the possibility to extract more information from data than human-specified business logic;
– as a pleasant consequence, any pre-existing data (initially conceived for other primary purposes), can be repurposed and reused, meaning extracting more business value per bit;
– another pleasant consequence is the possibility to handle data with low signal-to-noise ratio (like user behavior data);
– and finally, if the legacy business logic didn’t have quality metrics, they will be introduced, because any kind of supervised machine learning includes measuring and knowing the quality metrics of the predictions (accuracy, precision, recall, f-scores).

In this post, I’ve only described the supervised machine learning. There is also a big area called unsupervised machine learning. In December last year, at the last day before my vacations, I’ve finished my first experiment with it and this will be the topic of my next post.

And Big Data is so much more than just machine learning. It also includes architecting and deployment a heterogeneous database landscape, implementing high-performance processing of online and offline data; implementing recommendation engines, computer linguistic and text processing of all kinds, as well as analytics over huge amounts of poorly-structured and ever growing data.

If you are interested to work in our big data team, contact me and I will see what can I do (no promises!)

Puyuma

People emerged from Afrika and have slowly, generation after generation, populated first Near East, then Europe, Black sea area, and continued their movement to the East. Something has forced them first to cross endless steppe of the central asia, and then to populate modern India and China. Maybe they wanted to reach the place where the sun sleeps. Or some very rational, economic reasons have forced them to go East.

Finally, after crossing what is now called the Taiwan Straight, they have reached the east border of Taiwan. What they saw looked something like this:DSC_1184

This is, literally, the end of the world. If you go to further to the east, you will see thousands and thousands miles of ocean, and then you hit that invisible line separating today from yesterday.

But, luckily, people didn’t know that, so Taiwan became the launchpad for miriads of expedictions. Taiwan is the last big piece of land that people saw, when they have departured on their small vessels and started their adventure to populate islands of Philippines, Indonesia, Polinesia, Melanesia and Micronesia.

But some people decided to stay on Taiwan. The languages they spoke are now classified to be closest to the proto-austronesian language, the common ancestor of all Astronesian languages. Specifically, if you take the puyuma language, some of the researchers believe it is at least 4000 years old. By its age, it can be compared with the (now dead) indo-european language, the common ancestor of such languages as Old German, Roman, Greek and Slavic.

Puyuma is as old as the Chinese language. But maybe, because the life of the East Taiwan so slow and peaceful, in this warm subtropical climate, it has changed less with the time. And this can be heard.

Every time I hear a puyuma song, I liteally feel the breeze of the ancient times. The times when they have already invented some consonants, but many words still consisted largely only from vowels. So the consonants don’t prevent the poetry to be sung.

And this is how puyuma sounds. Maybe, this lullaby is the last what mothers sung to their sons and daughters, at the evening before they boarded their ships, to leave their birthplace island and their family – forever:

(Link for readers from China: http://www.kuwo.cn/yinyue/522045/)

Shanghai

When I was going to Shanghai, I was expecting the developing country situation like I have already ranted. And I have really found it that way.

So when I’m asked how I liked Shanghai, I can only answer: if after landing to the modern and clean western Pudong airport I was immediately directed to a personal limousine and was chauffeured to the Hilton hotel, and then next day if I ate my breakfast in the hotel, and then went by limousine to the Bund, then to the Super Brand Mall to pickup some fancy magazine in the book store and enjoy it with the cup of freshly made tea, then if I had had my lunch in the upper floors of the K11 art mall, and then enjoyed the exibition here, just to return back to my warm and air-conditioned Hilton to change my clothes and to prepare for a dinner somewhere in a fancy french restaurant — if I did only all of that, I would like Shanghai a lot. If you like design, fashion, and art, in Shanghai you can enjoy a more beautiful, more bold, more luxurious, more diverse, and more abundant design and art than in Germany.

But I haven’t ordered a limousine and Hilton.

soupFrom the Pudong Airport, I took the Metro line 2, at 5pm in a working day. My hotel was just a room in an apartment building, and it was roughly as cold as the street outside. Instead of being chauffeured, I have walked along the Chang Le Lu from Jing An Si to the People’s Square, and I’ve got a sore throat due to the air. For the breakfast I ate Rou Bao for 1,5 yuan, for lunch a soup for 4 yuan, and for dinner some russian “pirogi”-like stuff for 2 yuan per item. pirogiWhile I’m sure my exposure was too brief to really understand the different classes of people living in Shanghai, I think I saw at least the two of them. The people living in Hilton and visiting art exibitions. And the people eating meat buns for 1,5 yuan and driving scooter on Shanghai streets.

Once in a metro, I saw two girls sitting nearby. One was a janitor lady, dressed in the blue one-piece-overall. Her face features looked for me like maybe the West-China origin, her hands were like sand paper, her skin was red and inflammed, and she didn’t wear any makeup. Her neighbour was a hello-kitty-lady, very round Shanghai face, dressed in some brand clothes, having some lady bag, wearing eyelashes longer than her eyes and the high-heel boots, and fiddling with her iPhone.

Not only it was a very striking difference, but it has occured to me if I were asked to make friends with either one of those girls, I would immediately choose the janitor lady. She was so open, so simple, so powerful, and it seemed than her soul has not yet been crushed by the city of Shanghai.

I believe, Shanghai has the power to force you to be willing to belong to the elite class. If you live in Shanghai, you will automatically want to live in Hilton, eat in shopping malls and fancy restaurants, and be chauffeured around. And this desire will appear in you in many small details – how you try to be first in any waiting line, how you ignore everyone else in the metro, how you constantly honk in your car just to save 3 seconds of time per ride, how you start putting on fake brands just to appear more wealthy than you are.

I think, only very strong souls with very good upbringing can resist this Shanghai urge. I’m afraid I’m not strong enough, even after 3 days in this city, I’ve started to cut in line and to push and to hate other people in the metro. So I’m happy I don’t need to live in Shanghai and I don’t need to prove my soul qualities in the fight against of this monster.

 

 

Auto: +6 Monaten

Die Namen Fahrschule und Fahrprüfung sind insofern irreführend, dass sie vermuten lassen, dass man nach dem Bestehen der Fahrprüfung ein fahrtauglicher Autofahrer sein wird. Tatsächlich fängt mit der ersten Fahrt das Lernen vom Autofahren erst an. In der Fahrschule wird nur gerade so viel Kenntnis vermittelt, dass man bei diesem eigenständigen Lernen sich selbst oder die anderen nicht umbringt. In der letzten 6 Monaten habe ich bei praktisch jeder Fahrt etwas neues dazu gelernt. Ich bin ungefähr 7000 km gefahren, meistens zur Arbeit, aber auch Langstrecke nach München, Dresden und Berlin. Ich kann mich jetzt in Stau, im dichten Verkehr, auf super-engen Strassen und in der Nacht mit Regen einigermaßen gut bewegen. Ich bin mir aber sicher, dass ich in den nächsten 6 Monaten nochmals ungefähr so viel lernen werde, denn ich habe z.B. noch nicht auf dem Schnee und nicht in den Bergen gefahren.

Ich finde immer noch komisch wenig Informationsquellen, die den riesigen Informationsumfang darlegen würden, den man selbsständig durch Trial and Error mühsam erlernen muss. Ich habe nur diese Videos von einem Fahrlerner aus Kiew gefunden, wo z.B. solche triviale, aber wichtige Dinge thematisiert werden, welche Fallen es gibt, die zu einer Türbeschädigung führen können, nach welchen Kriterien man sich einen Eiskratzer aussuchen kann, oder in welchen Fällen Totwinkel wirklich gefährlich sein kann.

Natürlich kann man einiges nicht erzählen, das müssen deine Hände und Füsse selbst trainieren. Aber es gibt dort Fälle, die man einem einfach beibringen könnte:

– Linker Fahrspur auf der Autobahn, von hinten nähert sich ein Fahrzeug und deutet unmissverstänlich darauf hin, dass der Spur geräumt werden sollte, rechts gibt es aber noch keine Lücke? Blinker rechts schon mal betätigen, um zu signalisieren, dass du den Spur baldmöglichst freigibst.

– Spurwechsel in der Stau: Blinker betätigen, dann beobachten, wer von den Nachbars sich verlangsamt und dir eine Lücke schafft, zügig die Lücke nehmen und sich dafür bedanken. Falls keiner es freiwillig tut, langsam das eigene Fahrzeug an den Rand eigener Streife bewegen. Ebenso: im Stau den Nachbarspur genauso gut wie den Vorausfahrenden beobachten, die Spurwechsler rechtzeitig erkennen und das Wechseln ermöglichen.

– In Stau, wenn rechts oder links ein Abbiegestreifen anfängt und du stehen musst, schaue in den Spiegel, ob der hinter dir fahrende abbiegen möchte, und wenn ja, im eigenen Streifen möglichst weit nach links bzw. rechts einordnen, damit er noch an dir vorbei kann.

– Im Parkhaus, wenn du selbst in der Durchfahrt bist und ein Auto ausparken möchte und den Gang zurück eingelegt hat, anhalten und ausparken ermöglichen. Dabei nicht langsam heranrollen, damit der Ausparkende nicht unter Druck gesetzt wird.

– Auf der Tankstelle, falls zwei Zapfsäulen hintereinander in einem Durchgang stehen, bis zur hinteren vorfahren, auch wenn die Tankstelle momentan leer aussieht.

– Wenn der Vorausfahrende links abbiegen möchte und viel Gegenverkehr abwarten muss, kann man entweder wie viele Autofahrer unerlaubterweise Gehweg oder Radstreife benutzen. Ich habe aber herausgefunden, dass einfach nur stehen und warten durchschnittlich nur noch 10 Sekunden länger dauert, und ich habe bis jetzt noch keinen hinter mir Fahrenden erlebt, der so arschig gewesen wäre, um mir in diesen Situation zu hupen.

Wenn wir schon von den Ärschen sprechen, hat sich ihre Beschaffenheit mit meinem Fortschritt verändert. Nun werde ich äußerst selten von Dränglern belästigt. Dafür aber umso mehr von den Zu-Früh-Überholern. Ich fahre einem langsamen Fahrzeug hinterher, hinter mir bildet sich eine Schlange. Es gibt keine sichere Möglichkeit zum Überholen und die hinter mir her fahrenden sehen es genau so, denn sie überholen auch nicht. Sobald sich eine Überholmöglichkeit ergibt, schalte ich den Blinker ein und beginne den Überholvorgang, und bemerke in den Rückspiegeln gleichzeitig, dass der hinter mir fahrende ebenso den Überholvorgang gestartet hat. Mir bleibt keine Zeit zum Reagieren, denn ich bin bereits beim Ausscheren. Im besten Fall reagiere ich doch noch und schere wieder ein, oder das Auto hinter mit kommt nur noch gefährlich nah an mich heran. In einem Fall musste der hinter mir fahrende von mir vollständig auf den Gehweg ausweichen. Er hatte Glück, dass es an dieser Stelle keinen Bordstein gab! Dann, statt zu bremsen, hat er sich auch noch beschleunigt, und in der Staub- und Steinwolke auf dem holprigen Gehweg hupfend, hat er uns beide überholt. Ich meine mich zu erinnern, dass in der Theorieprüfung genau diese Situation thematisiert wird, mit der einzig richtigen Vorgehensweise: erst dem Vorausfahrenden das Überholen ermöglichen, dann selber überholen. Insofern müssten diese Fahrern entweder ihre Fahrprüfung zu lange her haben, oder sind einfach nur Ärsche.

Ich bin immer noch der Meinung, dass ich mit meiner Autokamera die Ärsche, die gegen die Strassenverkehrordnung mutwillig, bewusst, eindeutig und gefährlich für die anderen verstoßen, durch ein einfaches Upload von meinem Video auf polizei.de müsste anzeigen können. Leider sind Datenschützer der anderen Meinung. Wer mir in dem nächsten Wahlkampf eine entsprechende Gesetzeänderung verspricht, kriegt meine Stimme (auch wenn er für CSU kandidieren würde).

Ebenso kriegt meine Stimme derjenige, der das Problem mit dem Geschäftsjahr in den Strassenbaubetrieben behebt. In November gab es zwei Wochen, wo ich fast jeden Tag eine neue Strecke zur Arbeit wählen musste, weil täglich neue Baustellen aufgemacht wurden. Insgesamt waren es 8 neue Baustellen, die meine Fahrtzeit momentan um 30% bis 100% verlängern. Wenn man viele Baustellen gleichzeitig aufmacht, bauen sich bei jeden kleinen Verkehrsbehinderung lange Staus. Man braucht eine Budgetierungsregelung, die dafür sorgen, dass Baustellen gleichmäßig über das Jahr verteilt aufgemacht werden und dass möglichst wenig Baustellen gleichzeitig auf sind.

Ich bin darauf gespannt, was mir die nächsten 6 Monate bringen.

Beginning software architecture (for Yun)

Every programmer starts her career with something small. Implement a small function. Then implement a couple of functions talking to each other. Then implement a module, with dozens of functions, and maybe error handling and an API.

But sooner or later, we all want to move on and to step up to the higher abstraction level. We want to oversee the whole software system. We want to learn how to design it – how to do software architecture. But because this is our first time when we are stepping up one abstraction level higher, it is often very hard to do. Where can I start? When am I finished? How do I know I’ve created a right architecture?

Teachers and universities often don’t help but instead make things even worse, because they overload us with huge amount of information and detailed requirements about the architecture.

Meanwhile, there is only one thing about software architecture that is really important.

Architecting software is like caring for your child.

You want that your child will be safe and healthy; and that he will be loved, and have a long and happy life.

Safety. Your software might crash in run-time, or destroy valuable data. If it depends on its environment (other software or hardware) to run – teach your software, how to recover, when its environment fails. Teach your software, how to protect against the input from hackers and unprofessional users. Teach your software to change or produce data, only if it is fully sure it is working correctly. Teach your software, how to sacrifice one part of it to protect the whole, and teach it to run without one of its parts.

Health. Obesity is the most important problem for software. Always try to implement the same functionality with less code. Do not implement functionality, which nobody needs, but do prepare the software for the challenges it will definitely expect in the future – plan for extensibility. Use refactoring to avoid code areas that nobody is able to understand and to change, because these are the dead areas of the software body, limiting its flexibility.

Software is often created it teams. You want that the other team members love and care about the software as you do. Make sure that everyone writes code that can be read by anyone – force a uniform programming style if needed. Ensure that it is safe for team members to use the code of other team members – no unexpected results, proper error handling, consistent conventions. Avoid code ownership, because you want to get a lovely software system, and not just a set poorly interconnected moving parts.

For software to have a happy life, it must be loved and used by users. Ensure you not only understand the software requirements, but also why the users have these requirements. Work with the users to define even better requirements, which will make your software faster, slimmer or robuster. Come up with the ideas how to make your software even more lovable – a successful software will get more loving and motivating hands to work on it, while an unsuccessful software will be abandoned and die.

It is not easy to care for a child, nor it is easy to create a good software architecture. There is no rules equally suitable for all children – every time you will have to find a proper answer, may be by trial and error. But the results of the job done right might make you equally proud and your life fulfilled.

Война систем

Война в 21-м веке. Дико, нелепо, не складывается. Не верится. Ведь Интернет уже, как в свое время Кольт, уравнял всех людей – по крайней мере по доступу к информации. Ведь давно уже все, кто поуспешнее, работают в интернациональных корпорациях с отделениями по всему миру и командами, разбросанными по всему глобусу. Ведь все уже привыкли, что можно просто сесть в самолет и через несколько часов появиться в любой точке планеты, чтобы поглазеть на людей, полюбоваться красотой архитектуры и ландшафта, насладиться незнакомой пищей. Ведь многие уже настроились и ждут что вот-вот сделают наконец единое планетарное правительство, чтобы исключить всю эту никому не нужную возню с паспортами, визами, пошлинами и прочим бюрократическим хламом. Что можно будет наконец освободить значительные средства, идущие на содержание армий, и оставить только полицию.

А тут, на тебе. Один атавизм – более-менее случайно выбранный кусок планеты с границей, гербом и гимном – страна – воюет с другим таким же атавизмом. Но обе стороны сидят при этом в Фейсбуке со своих айфонов. Оксюморон. Как такое в голову укладывается?

По моему, никак. Страна в 21 веке не может воевать с другой страной за территории. Это было бы просто детским садом.

Речь может идти только о конфликте несовместимых цивилизаций.

Возьмем Израиль и Палестину. С одной стороны, евреи, которые жили там веками, которым эта территория дана непосредственно Богом по нерушимому завету и у которых все религиозно значимые события произошли именно там. С другой стороны, палестинцы, которые также жили на этой территории веками, и которых силой и нахальством вытесняют с тех самых мест, где жили, трудились и похоронены их предки. Кстати, значительная часть палестинцев – христиане. И для них эта территория тоже является тем святым местом, где родился, учил и погиб Спаситель…

В конфликте между Россией и Западом, который сейчас происходит по всему миру, а в наиболее активной фазе на Украине, наверняка тоже идет речь о столкновении цивилизаций. Есть очень много отличий между Россией и Западом, но по-моему, весь конфликт можно привести к одному коренному отличию, а именно, к вопросу о государстве.

В современной западной концепции, государство стоит не выше каждого отдельного гражданина, а успешность государства определяется в первую очередь тем, насколько успешны (счастливы, здоровы и т.п.) его граждане, каждый в отдельности. В России успешность государства определяется тем, какие великие проекты (индустриализация, поворот рек, космос) государство осуществило и насколько его боятся или уважают другие государства. При этом интересы государства стоят выше интересов каждого отдельного гражданина.

Вследствие этого, в западной концепции очень четко различаются понятия страна, народ, государство и правительство. Государство предполагается исполнителем социального заказа – оно должно на наши налоги обеспечить безопасность, дороги, энергетику, экономику и прочую инфраструктуру. Грубо говоря, оно такой же исполнитель, как продавец автомобилей или строитель вашего дома. Исполнители часто хотят наебать заказчика: работать поменьше и взять побольше. Заказчики хотят обратного. Возникает ситуация торга или противоборствия, т.е. народ торгуется с государством, и каждый хочет заплатить государству поменьше и получить побольше. Поскольку на Западе народ и государство в принципе не бывают едины, понятие “страна” может обозначать либо народ, либо государство, в зависимости от контекста.

Государству для выполнения его обязанностей положено иметь силовой аппарат, который государство могло бы применить и против народа. Чтобы исключить эту ситуацию и обеспечить равноправный торг народа с государством, приняты некоторые инструменты демократии, например сменяемость правительства и независимость средств массовой информации, которые заботятся о том, чтобы не приходилось менять шило на мыло. На Западе правительство меняется, а государство остается. Можно быть недовольным текущим правительством, но гордиться государством. Можно быть недовольным государством, но любить страну.

В России, все эти четыре понятия слиты в одно. Критикуя Путина, критикуется не только текущее правительство, но и государство в целом. Критикуя российское государство, критикуется также и страна в целом, а значит и российский народ. Поэтому Путин, похоже, совершенно искренне считает российскую оппозицию врагами России и россиян – ведь они критикуют его действия.

Когда Запад вводит санкции против текущего правительства России, то он ожидает, что российский народ поймет, что его текущим правительством в мире недовольны, и может быть задумается на следующих выборах и подправит состав правительства. А в России это воспринимается как санкции против российской государственности в целом, а значит и против страны, и против каждого россиянина в отдельности. В результате все с радостью воспринимают ответные санкции против Запада. Хотя на самом деле произошло вот что: текущее правительство натворило дел в Украине, Запад наказал наиболее злостных чиновников, которые представили это дело так, как будто всю страну наказали, а в результате пострадали все россияне.

Т.е. говоря по простому, Путин наебал россиян. Ведь Западу не понравился только Путин и его соратники, а отвечать пришлось всем россиянам. Причем он сделал это так тонко, что все даже с радостью кинулись под топор санкций.

Это ему удалось только потому, что в российской концепции принято ставить государство выше отдельных граждан. Ведь если интересы государства выше интересов граждан, то торг неуместен и состояние противоборствия между народом и государством вредно. А значит, не нужна и демократия и независимая пресса, ведь народ в данной концепции не должен иметь права быть недовольным государством. При отсутствии демократии, сменяемость правительства также не может быть обеспечена, т.е. правительство перестает быть текущим управителем дел государства на определенный срок и становится самим государством. Критика правительства таким образом является критикой государства, а раз государство важнее народа и народ живет для того, чтобы государство осуществляло свои великие проекты, то критика правительства является и действием против народа и против страны в целом.

Да, такая система позволяет эффективно осуществить много великих проектов. Пока СССР запускало человека в космос, в Бельгии люди придумывали новые сорта вафель. Проблема только в том, что при этом народ утрачивает какую-либо возможность не быть наебанным государством. Потому что а) средства массовой информации под контролем государства, народ и не поймет, где его наебывают и б) те, кто тем не менее смогут понять, не смогут этому ничего противопоставить, не только потому, что они моментально станут “агентами” и “врагами народа” и пойдут лес валить или принудительно лечиться от головы, но и потому, что они и не должны себя противопоставлять государству. Ведь даже в концепции интересы государства важнее интересов отдельных личностей, а значит государство имеет право наебывать свой народ.

По-моему, весь конфликт на Украине и состоит в том, что простые украинцы помнят, как их каждое новое правительство наебывало, но хотят хотя бы сохранить шанс, что рано или поздно они выберут себе такое правительство, которое если и будет наебывать, то по-божески. В составе России у них такого шанса не будет вообще, потому что его не существует концептуально, в принципе. В России государство ебет народ – всегда. Против того и воюют.

Auto fahren: Monat eins

Die Fahrschule bereitet dich auf das Auto fahren ungefähr genauso gut vor, wie die Uni auf die reale Arbeitsbedingungen vorbereitet. Also, unzureichend.

Jede Fahrt mit dem eigenen Auto kostet mir mehr Nerven und Kräfte als die Fahrprüfung.

Zum einen, es fehlt eine zweite, erfahrenere Person im Auto. Niemand kann bestätigen, dass ich richtig fahre, oder auf meine Fehler hinweisen. Das macht mich ziemlich unsicher.

Zum anderen muss ich jetzt während der Fahrt all das übernehmen, was in der Fahrschule der Lehrer macht: Klimaanlage einstellen, Scheiben waschen und sagen, wohin es lang geht. Das lenkt ab vom Fahren selbst, das haben wir nicht in der Schule trainiert, und deswegen macht es mich unsicher.

Was wir noch nicht trainiert haben, ist parken in den Parkhäusern. Die Theorie, wie man ein- und ausfährt und bezahlt, die kenne ich. Aber: in welchem Gang muss ich einfahren? Darf ich die Gegenfahrbahn benutzen, um steiler einzufahren? In welchem Gang fahre ich auf? Muss ich Licht einschalten? Was ist sinnvoller – vorwärts oder rückwärts einparken? Und das wichtigste: spürt man im Auto, dass man gerade ein anderes Auto oder einen Pfeiler touchiert? Ich dachte, ich hätte noch rechtzeitig anhalten können, wenn ich was höre oder spüre. Tatsächlich habe ich erst dann was gehört, wenn der Außenspiegel schon angebrochen war. Man muss immer in alle Richtungen SCHAUEN!

Ich war auch nicht auf das Gefühl vorbereitet, das man spürt, wenn das Auto kaputt geht. Einen Tag nach dem Autokauf den Spiegel beschädigen fühlte sich so an, als ob ich meinen Arm gebrochen hatte.

Wenn dann der Service von Alfa Romeo mir einen Kostenvoranschlag von über 3000 € gemacht hat (nicht nur für den Spiegel, da gab es sonst noch vieles zu tun), war das nicht mehr lustig. Gut, einige Sachen habe ich über die Gewährleistung beheben lassen, und ein Ersatzspiegel hat mich auf Ebay 40€ gekostet. Aber man lernt unglaublich viel dazu. Zum Beispiel, wie man das CD Radio mit zwei Bügeln aus der Schacht herauszieht.

Das sonstige Thema, wo ich durch die Fahrschule nicht vorbereitet war, ist das Zubehör. An einen neuen Vebandskasten und die Warnweste habe ich noch gedacht. Was ich sonst noch mitfahre ist eine kompakte Lampe, ein Glasreinigungsmittel, eine Waschlappe,  ein KFZ-Ladeadapter, eine Parkuhr und Wasserflaschen. Ich habe das Gefühl, dass ich noch weitere Sachen mitfahren sollte, weiß aber nicht, welche.

Was ich auch nicht wusste, was genau würde mein Fahrzeug verkehrsuntauglich machen. Wenn z.B. die Sonnenblende und die Scheibenwischer nicht gehen, darf ich das Auto trotzdem fahren? Das hat mich noch zusätzlich verunsichert, abgesehen von den üblichen Schwierigkeiten (ein Benziner statt Diesel, andere Maßen, größerer Wendekreis).

Traurig fand ich die Tatsache, dass der Weg zur Arbeit über die Autobahn (24km und 29 Minuten) weniger Benzin verbraucht als der Weg über die Landstraße (17km und 37 Minuten). Die Alfa verbraucht bei 20kmh doppelt so viel als bei 80kmh. Wohl das technische Problem von allen Verbrennungsmotoren. Soll mein nächstes Auto elektrisch sein?

Spätestens nach einer 1,5stündiger Autobahnfahrt habe ich auch festgestellt, dass die einfachen Regeln meines Fahrlehrers, wie man den Sitz einstellt, nicht ausreichend sind. Einen Nackenkissen habe ich schon bestellt, und probiere gerade unterschiedliche Rückenneigungen aus. Abgesehen davon wundert es mich, dass ich in meiner Sitzposition manchmal den Ampel nicht sehen kann.

Was ich aber sehr gut sehen kann sind die Schnauzen von Autos hinter mir, die zu oft an meinem Heck kleben. Verstehe ich nicht. Das passiert entweder dann, wenn ich genau die angezeigte Höchstgeschwindigkeit + 9kmh fahre. Dann werde ich auch nicht schneller fahren und mein Fahrerlaubnis riskieren. Oder passiert es dann, wenn ich mich gerade verlangsame, um in den Parkhaus richtig einzufahren. Dann werde ich auch nicht schneller sein. Und genau das macht mich fertig, denn ich hasse es, wenn ich jemandem im Weg stehe, hier kann ich mich aber nicht anders verhalten.

Ach ja, den Aufkleber “Anfänger” habe ich entschieden nicht anzubringen, weil er die Ästhetik von Alfa stören würde. Trotzdem gibt es erstaunlich wenig Leute, die hupen oder abgesehen vom Drängeln sonst sich arschig verhalten würden.

Ansonsten lernt man unerwartet viele Kleinigkeiten dazu. Dass z.B. der Fahrzeugschein nicht in die Geldbörse passt und eine neue muss her. Dass die Kennzeichen nicht gleich sind und eins davon muss hinten sein. Dass die meisten europäischen Autos die Tankklappe rechts haben, und die asiatischen links. Dass der Ölstand beim warmen Motor überprüft werden muss, während alle anderen Flüssigkeiten beim kalten Motor zu prüfen sind. Dass Hemde mit einer Brusttasche praktischer ist, als die Hemde ohne, weil dann der Parkticket in der Haste mit dem Mund gehalten werden muss.

Fazit: es gibt noch ganz viel zu lernen und ich verstehe nicht, warum ich dabei nicht unterstützt werde. Ich finde keine sinnvollen Bücher oder Kurse für Fahranfänger. Als ob niemand bisher diesen Weg gegangen ist, oder als ob die gewonnene Erfahrungen es nicht Wert sind, geteilt zu werden…

Being a happy bricklayer

“What are you doing?”
“I’m laying bricks,” said the first bricklayer.
“Feeding my family,” said the second bricklayer.
“I’m building a cathedral,” said the third bricklayer.

When I’ve learned this story in the primary school, I was shocked to see how shitty the life of the first two bricklayers were. The first one didn’t even had any intrinsic motivation to do his job, so he was probably a slave, a prisoner or some other kind of forced workforce. And the financial situation of the second one was apparently so critical that he was forced to take a job – any job he could find – to feed his family, even though he wasn’t really interested in laying bricks or perhaps even in construction works altogether.

I’m very happy to say that I was building a cathedral on every job I took so far. And frankly speaking, I don’t even see a point to do it differently. A job takes 8 hours a day. And for a hobby we could find, perhaps, one hour per day, on average? So by making your job to your hobby, and your hobby to your job, you increase the happy time of your life by 700%.

Another shocking aspect of that story is the missing loyalty of the first two workers. Per my upbringing and education, I’m normally very loyal to my employer, at least as long as they are loyal to myself. When my employer decides to hire me, they have some purpose in mind. It is the question of my loyalty, and of my integrity, to deliver upon it. But the first two workers seemed to be absolutely ignorant to their purpose in their organization!

That’s why I don’t really know what to say, every time when I hear someone declaring that his/her purpose in the company is not related to money. I mean, common, private companies have exactly one primary goal, one reason to exist: to earn money. Yes, they might have some cool vision like not being evil, or having a laser-sharp focus on perfect products, but these goals are all secondary. They are quickly forgotten when the primary goal is in danger. No company can survive for long, unless it follows the primary goal.

Therefore, I do really think that the purpose of all and every employee should be to see how s/he can help the company to earn or to save money. If s/he is not okay with that, well, wouldn’t s/he be much more happier working in a government agency, a non-government, a scientific, military, or a welfare organization?.. Just asking…

Tolles UX

HUK24.de hat eine faszinierende (und teilweise mutige) UX. Probiert mal selber aus! Was mir gefallen hat:

1) Sie verkaufen die KFZ-Versicherung in exakt gleicher Art und Weise, wie ich es kaufen will. Es gibt keine Landing Pages mit glücklichen Menschen, die mir die Vorteile erklären. Es gibt keine Testimonials. Es gibt keine übergroße CTAs “Jetzt kaufen”. Stattdessen verstehen sie, dass wenn ich zum ersten Mal auf huk24.de komme, bin ich noch am Vergleichen, welches Versicherungsunternehmen ich auswähle, und deswegen geben sie mir exakt das, was ich möchte: schnell, unverbindlich und unkompliziert mal berechnen zu können, wie viel ich in meinem Fall zahlen müsste.

2) Aber das noch nicht alles. Am Ende der Kalkulation gibt es naturlich einen CTA “Jetzt abschließen”. Wenn ich aber an dieser Stelle den Tab verlasse und mir ein Paar Tage Zeit nehme, um die anderen Alternativen abzuklappen, und dann zurückkehre, wirft mir die Seite keine “Session ist abgelaufen”, sondern sie weißt noch alles, was ich damals eingetragen habe, und ist immer noch bereit, sofort einen Vertrag abzuschließen! Das allein ist goldig.

3) Wenn ich dann bei der Bestellung an den Punkt komme, wo Zugangsdaten vergeben werden, fragen sie nur noch nach einem geheimen Passwort. Die Benutzerkennung wird dann automatisch generiert und mir angezeigt, so dass ich meine komplette Zugangsdaten in meinem KeePass abspeichern kann. Und wenn ich mich nicht täusche, wird die E-Mail erst später abgefragt, und zwar an der Stelle, wo ich selber daran Interesse habe, sie mitzuteilen (z.B. damit ich meinen Versicherungcode erhalten kann).

4) Es ist möglich, bei der Bestellung eine WerberID einzugeben, wenn ein anderer Kunde von HUK24 sie mir empfohlen hat. Es gibt aber auch einen Hinweis, dass ich die WerberID auch später (sogar nach Vertragsabschluß) eintragen kann, falls ich sie nicht zur Hand habe.

5) Wenn ich die Seite in einem eingeloggten Zustand verlasse und später einfach www.huk24.de eingebe, bekomme ich nicht die Startseite zu sehen, sondern ein Hinweis, dass ich automatisch ausgeloggt wurde und mich wieder einloggen kann. Ich kann zwar trozdem nicht-eingeloggt weiter surfen, aber es besteht schon ein softer Zwang, mich einzuloggen. So kann HUK24 mich besser verstehen und mir personalisierte Funktionen anbieten.

6) Nach der Anmeldung komme ich zum “Meine HUK24” Bereich, wo in der Mitte die exakt 6 wichtigsten Funktionen abgebildet sind, die ich überhaupt jemals brauchen könnte: huk247) Und viele kleinere UX-Merkmale, die ich toll finde, z.B. durchgehend werden Buttons nicht deaktiviert, sondern beim Klicken erhält man eine Overlay mit Erklärung, was man noch machen müsste, usw.

Mal schauen. Wenn ihr eigentliches Produkt (die Versicherung) genau so gut funktioniert wie die Webseite, habe ich eine richtige Entscheidung getroffen.

Enterprise Innovation

Well, my Enterprise Seasons model was too simple. Actually, after creating their first successful “flywheel” product, some corporations proceed with creating second, third and further successful products, always remaining an innovative enterprise, at least at some of its parts. There are a lot of advantages in this:

Risk diversification. If one product fails for whatever reason, another products will keep the company afloat.

The law of diminished returns can be worked around. Instead of investing more and more creative power into smaller and smaller uplifts, one can enjoy a much higher ROI with a new fresh product.

Linear scalability. Growing the company by growing production and sales of a single product involves a lot of work with people, processes, and inevitable bureaucracy. Growing the company by creating a new product, can be just copying of its existing structure.

Several revenue sources can allow for aggressive market policies, so that the company might allow one of its products to be intentionally unprofitable, to gain market share.

– At last, there might be synergy between different products, for example ideas or methods from one product can be applied to another, or selling a combination of products might be easier.

Therefore, for me it is even more interesting to understand, why there are so many enterprises that have problems with innovations. Why some enterprises don’t keep creating more and more products? So far, I’ve seen the following scenarios:

Cultural incompatibility. Discovering a new product is everything but safe: 90% of new products fail. The traditional 19-century world view of a safe, life-time workplace, and a state welfare system eliminate the necessity of innovation. “We will work in the same safe market niche, and hopefully it will last until we leave the job and have our rent, and if not, the welfare system will help us to remain afloat and to find a new job.”

Ethical reasons. Growing a company can be seen as a consumeristic, anti-ecological activity. In this case, the company not only doesn’t create new products, also continuous development of its primary product is almost non-existing; it is in maintenance mode.

– While investing most of resources into establishing and developing its secondary product, the company’s primary product is hit and almost destroyed by a sudden market shift; its development is frozen and everyone keep working to make the secondary product the new primary.

– Even though the primary product is running well, most of its revenues are paid out to foreign shareholders running a short-time strategy. Innovation is barely possible, because there are not enough people and money for it.

If some innovation is nevertheless trying to happen, often there are cultural difficulties:

The Sun and stars fallacy. Sun is so much brighter than stars that we don’t see stars at day. The scale of the primary product is much higher than the one of a new product; it always has more visitors, page views, registrations, orders, revenue and operational spendings. “What? Your new product only generates X orders per month? What a fail, our primary product generates YYYYY orders! Let’s spend more on the primary product!” The trick is, if you don’t invest into the new product to grow it, it will also never reach maturity. The primary product was also so small in its initial stages.

The No-Fail mentality. When searching for a new product, everyone in the team (PM, designers, developers) must have the “Fail Fast, Fail Cheap” mentality. On contrary, developing a mature product, the team must have a “No Fails Allowed” principle. If you like test-driven development, run-time performance optimization, software security, writing source code commented and formatted to style guide, creating comfortable in-house frameworks and planning several sprints ahead, you should develop a mature product. But, if you like fast user feedback, discussions about usability and the minimal viable product, several releases each week, and your software works only in 80% of cases, your source code is dirty as devil, but you’d rather spend more time discussing one-pixel changes in the UI, then you should be in team discovering a new feature or product. When companies ignore these differences and assign their “No-Fail” developers to discover a new product, this only leads to everyone’s frustration.

The additive development fallacy. Development of the primary product is often additive. Projects like “We expect X% more users, have to scale hard- and software”, “We need feature X due to law changes”, or “we need a more modern design, let’s do a relaunch”, when implemented, usually never need to be rolled back. The problems begin, when new products or features are also implemented in the additive manner. Instead of starting with hypothesis verification and then a prototype, a complete product or feature is conceived, designed and implemented. Several months later, it rolls out, gets some less-than-moderate user attention, and starts to rot quietly in its tiny dark corner. Nobody has the balls to sun-set this feature, because, well, the company’s culture is additive, and the months of development are perceived as an asset. In reality, such features are a debt, constantly sucking team efforts and energy for maintenance, support, porting, translation, and operating.

I’m not sure yet, how enterprises create a new successful product. When observing enterprises with several products, I have the feeling that either

– a charismatic leader builds his very own small empire and creates a new product as a by-product (no pun intended),

– or the merge and acquisitions department grabs a product together with its team, and successfully integrates it into the company,

– or the company organizes its own startup incubator. The company owns then only partially its new products, and a lot of the existing infrastructure is not re-used, but at least the cultural issues are solved,

– or, in 0,00001% of cases, companies such as Valve have an innovation culture from the very beginning on.

Please share your experiences of innovations within an enterprise.