Lessons learned developing hybrid web apps (using Apache Cordova)
In the past year we started exploring a new (at leat for us) terrain: hybrid web apps. We already developed mobile web apps and native apps but this year we took a first step into the combination of...
View Article4 Tips for better CMake
We are doing one of those list posts again! This time, I will share some tips and insights on better CMake. Number four will surprise you! Let’s hop right in: Tip #1 model dependencies with...
View ArticleAbout API astonishments
Nowadays we developers tend to stand on the shoulders of giants: We put powerful building-blocks from different libraries together to build something worth man-years in hours. Or we fill-in the missing...
View ArticleA good name will shine forever
Naming things is supposedly one of the two hard things in Computer Science. Here are some tips on naming for programmers. Getters In the Java world property accessors are traditionally prefixed with...
View ArticleEvolvability of Code: Uniform Access Principle
Most programmers like freedom. So there are many means of hiding implementations in modern programming languages, e.g. interfaces in Java, header files in C/C++ and visibility modifiers like private...
View ArticleWhy I’m not using C++ unnamed namespaces anymore
Well okay, actually I’m still using them, but I thought the absolute would make for a better headline. But I do not use them nearly as much as I used to. Almost exactly a year ago, I even described...
View ArticleThe rule of additive changes
Change is in the nature of software development. Most difficult aspects of the craft revolve around dealing with change. How does one keep software extensible? How do you adapt to new business...
View ArticleEvery time you write a getter, a function dies
Don’t be too alarmed by the title. Functions are immortal concepts and there’s nothing wrong with a getter method. Except when you write code under the rules of the Object Calisthenics (rule number 9...
View ArticleExplicit types – and when to use them
Many modern programming languages offer a way declare variables without an explicit type if the type can be inferred, either dynamically or statically. Many also allow for variables to be explicitly...
View ArticleSimple C++11 – Part II – Class declarations
In the previous part, I’ve shown my guidelines for setting up compilation units. When writing simple application code with C++11, either classes or free-functions should be your main building blocks....
View ArticleMeet my Expectations!
A while ago I came across a particulary irritating piece of code in a somewhat harmlessly looking mathematical vector class. C++’s rare feature of operator overloading makes it a good fit for...
View ArticleQuantities in C++ and User Defined Literals
Some weeks ago one of my colleagues wrote about the use and implementation of physical quantities in C#. If you are writing an application in the technical or scientific domain chances are high that...
View ArticlePhysical Quantities in C#
Scientific applications usually perform lots of calculations with physical quantities. If you do not represent them properly in your code you run the risk of mixing them up. For example, it’s easy to...
View ArticleSoftware development is code organization
The biggest problem in developing and maintaining software is understanding code. Software developers should get good training in crafting code which can be understood. To make sense of the mess we...
View ArticleThe typography of source code
Take a look at the following source code, can you guess which language this is written in? It’s CSS. CSS has a typical layout with a minimal indentation depth where a group of selectors embraces lines...
View ArticleManaging C++’s complexity or learning to enjoy C++
Disclaimer I have never been a big fan of C++ coming from C and Java. C is a nice little language and yet offers many means of code structuring. Java offers many object-oriented features and makes the...
View ArticleTANGO device server architecture
In my previous post I explained the basics of TANGO and why you probably want to use TANGO for development of a distributed system. Now I would like to explain how to build and design a TANGO device...
View ArticleDon’t ever not avoid negative logic
I start this post with a confession: I’m not able to discern true from false. I wasn’t born with this inability, it got worse over time. The first time I knew I have this problem was in driver’s school...
View ArticleShould I test this?
Writing software is hard, writing correct software is even harder. So everything that helps you writing better or more correct software should be used to your advantage. But does every test help? And...
View ArticleFrom ugly to pretty – Three steps is all it takes
I hold lectures in software engineering for over a decade now. One major topic is testing, specifically unit tests. Other corner stones are refactorings and code readability. So whenever I have the...
View Article