Software development is a very wide subject and is growing day by day. It became impossible to have an overview about all the different sub fields of computer science and software development. I am interested in the following areas.
Object oriented and functional software development
And in the end the right language increases the productivity, the code quality and thus the time to market.
- Object-functional programming
- Object oriented and functional programing languages are beeing amalgamated into object-functional languages. This is still and process and I am curious of the new languages that will come. The most known languages in this area are Scala and Kotlin.
- Kotlin is IMHO the best language on the JVM right now.
- Scala is a research oriented programming language and is an important milestone. Because its development was driven by programming language researchers it included many things that were to abstract for "normal" software developers and wasn't excepted widely.
- Groovy was one of the best languages for rapid application development on the JVM in the late 2000s.
- Since the 90s I am a strong supporter of functional programming languages. In 1998 I wrote my diploma thesis on geometric algorithms in Haskell.
Parallelism and concurrency
One of my main interests is how to make software faster.
- Parallelism and concurrency
- Often large speedups can be achieved by concurrent execution of critical parts of a programm. But this is not always easy and a very challenging topic. One example is that there are upper bounds on the speedup, because there are problems that are inherently sequential or do not scale well.
- GPU computing
- With massively parallel GPUs speedups of 10 and more are possible.
- Distributed systems
- With distributed systems one can increase performance and scaleabiliy and also achieve fault tolerance and resilience.
How to finish a project in time, in budget with the right product ...
In order to create software successfully, you need also knowledge in agile methods, project management, soft skills, creating presentations, etc.
Data intensive applications
Data is the cornerstone of our society and economy. Therefore the buzzwords "Big Data", "Data Science", "Business Intelligence" and "Data Warehousing" get a lot of attention in the media. I worked on some data intensive apps.
- Camera image processing for measuring instruments (2010-2014)
- Column oriented databases (2002-2006)
- Parallel ETL processes (2001 - 2009)
- Fraud detection in telecommunications (1999 - 2000)