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.

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.

How to determine the exercised sport of a person by digitally analyzing their body

Well, my master thesis was a while ago – still here some interesting insights about what I did. I cannot share much more information, but if you’re interested about the details, just send me an email and we can talk about it.

The major goal of advertisement is to target the users needs and wishes as best as possible. Online advertisement offers a whole new spectrum of information combination to target these of a single user as best as possible. If 3D body scans of users and customers would be available, the targeting ratio of their needs could increase significantly by automatically identifying more personal aspects of this person – e.g. their exercised sport.
Using the morphable model concept for 3D models on professional athletes and normalizing the position allows predicting a person’s sport. It was determined, that the prediction accuracy is up to 73%. With this, sport gear companies can identify the exercised sport of each customer and provide the relevant and needed products. Therefore, research in this area should be extended, to improve and automate the prediction process much more in order to improve advertising and boost sales.

So what I did was taking a lot of 3D body scans and found out an automatic way in how to determine the sport of a person. So I used the morphable model, normalized positions and try to find clusters with the use of professional athletes of a single sport. In the end I tried to map testing persons to those clusters to see if the persons “fit” to the right sport.

Intelligent Software Broken Down To Dumb Questions Or Why Intelligent Devices Are Still The Future

I have to admin my geographical life is a little bit of a mess. I am travelling to our customer for about three days a workweek, love to visit friends all over in south Germany at the weekend and still have to visit my family in my hometown somewhere in between. So I would say I hit the road very often.

Google Now for Android loves to give you information about locations and how much time it takes to those locations. Places you visit a lot seem to appear in your Google Now cardset more often. Mostly they will tell you how long it takes to get there and how the traffic looks like. This intelligence is a part of the first smart devices today, which try to think ahead and give you the right information to the right time.

gnow-cardlist-manageA while ago I read an article about a person who built his whole life on his smart home. He has a server room with millions of cables in his basement and tries to let his home think more than he does. The problem he faced was that this “smartness” after a while began to trample on his nerves, so he reduced the smartness more and more. Giving information about the weather when you leave your home seems like a great idea – but nobody likes to get this information every time. Really every time. Which leads about thinking that this “simple smartness” is still not smart enough, because it does not know any detail about you and your day. And this is where smart devices are critical. Being smart without annoying. In my case this led to traffic information about the way to my workplace – on the weekend.

Due to being at the customers place three days a week I live in the hotel those days. On my way home from the office today, Google Now asked me if I want to receive information about the way to this hotel and I had to decide between “Yes” and “No”, which seems to be an overly simple binary decision. The same issue appears on Amazons Fire TV. They will give you suggestions about which shows or movies you can watch, but you have always the option to remove specific shows or movies from these suggestions. This is probably because those applications want to improve suggestions for you. But also here are a lot of reasons why a user can remove this suggestion. I’ve already seen a lot of movies and 10 suggestions with 8 movies I’ve already seen make no sense for me. If I remove those now, what does my Fire TV think about it? I don’t like the movies and it will not suggest any movies like this? But if I do like those movies it will not improve those suggestions but make it worse. You’ll find different “like or not like” mechanics in all kind of websites and apps like Facebook, Youtube, Spotify, Netflix, etc.

Yet the question is if these simple questions really improve your user experience – and I dont think so.

tl;dr: If smart applications want to improve their smartness, it will not work with dumb questions.