Android and the Custom UI Problem a.k.a. why the Google Pixel is a success

Do not get me wrong: I love Android and I am a big fan of it. But Android has a problem. And if you ask me, the problem is the customization of the Android interface by hardware manufacturer such as Samsung, HTC and Sony. And also that’s why the Google Pixel will be a huge success.

A while ago I decided, that my old Nexus phone needs a replacement. It’s old, used and has not enough space anymore. However, I was looking for a new Android phone and excessively reviewing the existing Android flagship phones. There are some good phones out there. HTC, Samsung, Sony, even OnePlus, whatever. But in my sense not a single complete great phone, from software, to camera and built-quality, which is horrible for the market and the competition with Apple. I found not a single great phone on the market.

The UI customization looks good on the first hand, because the phone gets even “better”, more unique, blabla, but if you take a second close look it is just a big lie:

  • Customizations are often not consequent on the complete interface. Here and there you see the original Android. This is just ugly.
  • Security lacks, because with new updates, new customizations need to be done or at least the older ones checked if they still work. Updates will be delayed.
  • Often bloatware (Samsung as an example) will poison the OS.
  • In the end it is still a question if it solves more problems than it creates.

I know, I know. They want to be unique, give a great user experience, want to be even better etc. etc. But I think it is time to question this.

Why do PCs have an untouched OS and Smartphones do not? I never got it, I still don’t. It costs so much money to customize it and it blurres the focus of the company. If a company does not create the OS, why even bother with customizing it? Use the resources to create a great device, a great piece of hardware and just put the blank Android on it. No more bothering with updates or security, no more bothering with the UI at all and normally: Better hardware!

So much resources are spent on something the company is not specialized in doing so: OS UI modification.

Thats why the Google Pixel will be a success. A hardware specialized phone manufacturer (HTC) focused on creating a great piece of hardware and Google just put a blank unmodified OS on it, another department and company created. As simple as that. And I hope other companies will realize it – or Google continues in doing so.

Moral Machine – moral decisions for self-driving cars

Self-driving cars are here. They can be better drivers than any human being can ever be. It is just a matter of time, till they’re in any new car.

Still, there is a major issue about it. They can decide faster and better, but somebody has to tell them how to decide. Often it’s easy, sometimes hard moral decisions have to be made. For example if you have to decide in either driving into 50 people or only one person. A lot of people will say one for 50 is better than 50 for one.

More complicated: German law forbids to rank human lifes. If an airplane with two persons in it will crash into a tower causing thousands of deaths – the plane cannot be shot. This is a relict of the Third Reich and their ideology.

But sometimes those decisions have to be made. MIT is researching and illustrating those moral decisions. Better: They build a website so everybody can start “judging”.

Try it out: moralmachine.mit.edu

Cloud in the Public Administration and how to achieve it

Recently I worked with colleagues on a publication for my company. It is a so called “Point of View” and will have a look on why it makes sense to use the (private and public) cloud in the Public Administration. Furthermore it will describe a reference architecture with which to integrate cloud services in Public Administration organizations.

It is only available in German, but if you’re interested, have a look at it here:

Point of View – Digitalisierung über die Bundescloud hinaus

It is also available on our official Capgemini homepage:

Point of View – Digitalisierung über die Bundescloud hinaus (Capgemini Link)

Length of advertising video per desired video

What most of companies who love to share their own advertising with the internet don’t get, is how much are users willing to bear. In other words: Who the hell doesn’t get annoyed or angry when a company wants to force you to watch a one minute advertising video in order to let you watch a 15 seconds video?

This is exactly what companies don’t get: There is a ratio about how long the maximum lenght of an advertising video should be in order to not let people become angry at your brand. Because what a company does then is the complete opposite of what it wants.

This ratio is called lenght of advertising video per lenght of video the user wants to watch. What the numbers are exactly – seriously I have no idea. But 1:1 or more ads is too much. In other words: Just taking the tv ads and throw it onto internet videos will not do the trick. Shorten it, produce new ones or stay at home.

Setting up a server, runnig it, maintaining it – why so complicated?

Nowadays running a simple e.g. Apache Webserver with a SQL database and deploying a Java application to it, is pure horror. And to be honest I have no idea how we became stuck in this nightmare a billion (estimated) years ago. Everybody wants technology better, faster, cooler – nobody wants server administration or software development better, faster, cooler. I just don’t get it.

Media, politics and everyone (even Bill Gates) often talks about how we should easen software development in order to get more younger software developer. Still software development is a user experience nightmare. I already talked about how complicated it is to develope a database in a team and track changes including deployment (in general it is complicated enough), but today I want to rant a little bit about server administration in general.

  1. OS User Interface: Most of the server I’ve seen are command prompt based Unix server where they allow you to connect to it via powershell. Why on earth should anybody do that? I don’t get it. This is the worst, what makes it impossible for a newb to administrate a server and run his or her own application on it. Give them a graphic interface of a normal OS and let them connect via something simple as a remote connect on windows.
  2. “Server User Interface”: What I want as a server administrator is a single program from which I can administrate all my server related stuff. My tomcat, my databases, user-accounts etc. pp. I can even imagine it still with a command prompt on the bottom of the window of this mysterious new server administration tool which even displays the commands which happen when you click a button. This tool is available on the server, it does not shut down tomcat or whatever when you close it, it can also be run remote and also over multiple servers. Would be great, nah?
  3. Update/Upgrade Automation: Have you seen how Software Updates work on WordPress? See.
  4. Deployment Tools: If a *.war file or a database update is ready to be deployed, it should be done like a file upload with all the automations from point 3/wordpress updates, which also means an automated maintenance mode set and disabled in the end. In a database update it would be great if it already checks what changes were made and tries to “update” the already existing database with some kind of conflict manager.

And these are only the most obvious parts of it.

Database development in teams

I’ve never learned anywhere in university, courses or from colleagues about how to develop a database in teams. Or lets say: Never the way that satisfied me. I hated it. It left an important part of development completely blank.

Thinking about how you use version control for all of your code to reproduce previous commits, branch it, fix it, merge it – this never happened anywhere I looked at development for databases.

What I’ve seen people do:

  1. Developer use a shared database. That was the most common scenario. There was one commonly hosted database for development. I don’t even want to think about what happens when in a previous commit/version a bug is found. But I also imagine the parallel development horrible. Adding might be fine – think about your colleague deleting or changing columns while you still work on your user story.
  2. Everyone has an own copy of their database – also pretty common. You just get a copy, do your stuff, upload it in the later shared database. Still horrible – still in fear the other colleague will overwrite your changes.
  3. Having scripts and jobs which copy stuff together set it up whatever. It might work somehow but in my eyes it’s far from perfect.

What I want to have:

One version controled database with the power of using mighty merging tools and one IDE which supports application and database development.

Let’s say we work in Eclipse to develope our awesome Java MVC web application with a relational MySQL database. In this case I see two folders in the project folder:

  1. Application – this is where Java code, Maven-stuff, HTML, JPS, whatever is saved.
  2. Database – this is where everything for the database lies. One file, or maybe multiple files which “outsource” e.g. views.

There is still one more point: Data.

Data will mostly be different from your own development environment to the testing environment or the live environment. You put data for personal testing purposes in your own DB, in the testing environment there is standardized testing data and there is no sense about putting a mighty super admin which you used in your testing environment with an commonly known password in your live environment. There should be the option to define specific datasets for specific environments – this is what you can save as well in the database folder. The IDE should support such datasets. There should also be at least one unversioned dataset for personal testing purposes. Copying, merging etc. different datasets in an own personal not version-controlled dataset should be possible.

How you merge those databases is somehow weird.

Nevertheless for a lot of these questions there is one great article I found: http://blog.codinghorror.com/get-your-database-under-version-control/

Some questions or wishes I have are still unanswered.

Finanzamt/tax authority and their modern way of communication

e70ec087_l

I just wanted to send my local tax authority emails instead of sending them letters, this is the form I received from them.

I don’t know whats worse: The fact that they can’t/won’t encrypt their emails or that if I want to send them or reveice their emails I have to give them full control over how they can send emails to me topics I couldn’t even imagine.

Welcome to 2016.

Searching files/extensions/names on a SVN repository via batch file on Windows

I had the problem of searching for specific file extensions on a SVN repository and there was no fast fix in sight. I want to share my little script based on another I found on the net (that other one was for Linux):

@echo off

:svn_list
echo List all ".bat" files from https://path.to/svn/:
	svn list --recursive https://path.to/svn/ | find ".bat"
	for /l %x in (1, 1, 15) do (
		if %ERRORLEVEL% EQU 0 goto success
		echo Error occured. Trying again...
		goto :svn_list
	)

echo Exiting without completing.
Exit /b

:success
echo Operation complete.

What differs from Linux is generally the “find” command. On Linux it would be “grep” which in fact won’t work on Windows.

So login to your SVN repository and put that script into a batch file (copy the text into a *.txt file and rename it to *.bat). This script will try it 15 times to list all the files you are looking for without any errors. If it can not reach this without any errors in between the 15 tries, it will display an error message and exit the program. If it reaches the goal successfully without any errors it will exit the script with a success message.

If you want to print out the list in a txt file, you can just change the 4th line to the following:

svn list --recursive https://path.to/svn/ | find ".bat" > output.txt

Please keep in mind, that a batch file is not easily able to just write output in a text file and display it in the command window. You can only redirect the output. So either text file, or command window.