Twentysixteen

Okay, as I’ve obviously missed wishing for a Happy Christmas, here’s the best wishes for the new year. Let’s hope for a great year, including (but not limited to) best of health, luck and success.

As promised I’ve uploaded a few photos of my renovation procedure. They can be found here. ­čÖé

Bits and pieces

Hi again folks. I haven’t been very active here (and on the web in general) and yeah, I’m not sorry for that… sorry for that. ­čśë
I’ve started playing again (PS4 FTW! Yay!) after pausing for a while and started a major project in completely renovating a nice and comfy flat for myself and my three lovely cats. In fact the latter is┬áwhat’s keeping me busy these days. When all goes as planned and it’s all done in spring next year I may upload a few photos to a new gallery.
Apart from that I started working as a integrator for embedded software at Diehl Metering GmbH. I love the new challenges and tasks these changes brought to my life.  And cheers to a still Facebook, Twitter and G+-free life!

Getting back to CppUnit – I recently updated my personal feature/cmake branch with a few fixes to the CMake build system (rebasing it on the current master branch and eliminating some build failures of the Qt Testrunner on Windows). I will try and submit them to the official Git repository ASAP.

And now… back to work. Which in this case┬ámeans extensively gaming Metal Gear Solid V while listening to its amazing soundtrack (like this one: Metal Gear Solid V Soundtrack – A Phantom Pain)

Bye bye [insert name of “social” network here]

Today I progressed┬áone step further to freedom. Yes, I deleted my Facebook account once and for all. After retreating from Facebook for the first time last year and leaving approx. 135 “friends” behind I really began to feel better. Twitter? What the hell did I need a Twitter account for?? I mean – seriously! I never really used it anyway, so, yes, I sent it to data hell and that’s exactly where it belongs. The same goes for Google+ and all the other useless stuff people and companies only use to spy on others!

So, what did I learn these last months? First of all, it doesn’t matter whether I’m on Facebook or not. It’s overrated as hell and I stay in contact with my real friends anyway (by visiting or phoning them for instance). I do not want to know whether someone “likes” a crappy “Daily Horoscope” or “Made my Day” motto, because most of these are modern spiritual garbage anyway.

Want to contact me? Write me an e-mail. Send a SMS or a message via Telegram. Or just phone me. That’s so much more personal than pretending to be friends on some ad-infested “social” platform.

Post-2014 and Pre-2015 speech

Here we are again – another year is ending. Personally, 2014 was a very turbulent year for me, to say the least. I know in the end that’s not really an excuse for┬ánot putting up the Tntnet benchmarks, but I won’t make any promises either anymore, because currently it does not seem that I will put those up anytime soon. So, if you’re really interested in how Tntnet compares against Apache 2, why don’t you find out┬áyourself? Shouldn’t be too hard to set up the required tools (I would suggest starting with looking┬áup the Apache benchmarking tool).

Apart from that I need┬áto say ‘Thank you a thousand times’ to all my friends and my family, who listened to me, supported me and never lost faith in me these days. You are the best people to have around. And I know that I can be quite a nuisance at certain times. ­čÖé

Okay then, what will 2015 bring? Well, I will try to get my life back on track for once. 2015 will be a year filled with sparkling and exciting changes and challenges. I’m an optimistic guy (I┬átry hard to be at least) and so I still trust in the fact that┬áan honest┬ásmile will always be worth so much more than wasting the time with hate, fear or other negative feelings.

And so all there is to say for now is “Merry Christmas and a Happy New Year everyone”. Always┬átry to be friendly and love each other.

Ping

No, I’m not dead. So… yes, you’ll get those Tntnet benchmarks eventually. There’s just a bunch of other stuff going on in my life lately and so I did not find time nor motivation to drive this any further. But it seems to get better now (staying┬ápositive helps a lot), so – yes, you’ll get those Tntnet benchmarks eventually. It may just take another two to three months. ­čÖé

On a side note I’m currently working on using the Linux BlueZ 5.x bluetooth stack via its D-Bus API. That’s some highly interesting stuff, even though the BlueZ D-Bus API documentation is vague at best (and I won’t even mention the state of the documentation for the C API). But fighting through all the docs and even the source code of BlueZ itself paid off in the end. The system I’m developing the software for┬áis running quite stable and I’m proud to say that it passed all tests this week. Oh, yes, I did not use the low level D-Bus C API for this task of course. You may take a look at the D-Bus low level API reference documentation for the reason behind this decision. As I definitely did not want to “sign up for some pain”, I decided to use the Qt D-Bus high level bindings for this project. Everyone interested in communicating via D-Bus in their own (C++/Qt) applications really should try these out.

So long and Pong.

Tntnet – a small C++ based web server

Being a fan of C++ and having a new Embedded Linux project in the pipeline, a colleague recently put my interest onto the small C++ based web server Tntnet. Tntnet essentially is a framework that allows to generate rich dynamic web applications using C++ and a model-view-controller approach – just like Rails (Ruby) or Django (Python). For this task Tntnet comes with a variety of tools: a sort of “meta compiler” that generates pure C++ code out of so-called “ecpp” files (which are a mixture of HTML and C++ code), the standalone web server executable and the Cxxtools C++ library that brings stuff like JSON / XML RPC, logging capabilities and much much more. Before hacking any code developers have two options to deploy a web application: either compiling the web stuff as shared library, which in turn can be loaded as a module by the standalone Tntnet executable, or compiling everything into a single application, which then serves as the web server providing the content. The latter case contains of a simple main() entry function in which the server is set up and configured. It may look like this:

The above code is essentially copied from the Tntnet Quick Start Guide.

Writing CMake scripts to search and use these tools and libraries merely took a few minutes and an hour later (reading my way through the documentation and Howtos on the official website) my first web application (a simple CRC32 Checksum calculator) compiled successfully. Due to its C++ nature the application has a really small footprint (~230 KB), serves http requests amazingly fast and hence seems like the ideal solution for our new project.

Sorry that I don’t have any more examples for now, but I will update you later with some stats (comparing Apache2 and Tntnet using the Apache2 Benchmark suite) and more code. So long and keep on hacking.

Testing C++ applications

At work I recently had to look for a Unit Test Framework that’s usable on Windows. We had used the great CppUnit library to drive our unit tests for our Embedded Linux applications before and hence I decided I’d look into that first. Maybe I should explain first, that the original CppUnit project was recently forked by the Document Foundation (that’s the girls / guys driving LibreOffice) as the original project seems to be dead for some time now. Even some major Linux Distributions already switched to this fork, one of them being Debian – which is shipping 1.13.1 in Jessie. Driven by the Open Source thought many of our Windows (Embedded) applications are being compiled using the MinGW Toolchain (essentially that’s the GNU Compiler Collection (GCC) accompanied by some GNU Tools). And that’s exactly where the pain began.

CppUnit mainly ships for usage with two build systems – one for Microsoft Visual Studio based solutions and an Autotools based build system ┬á(there are some others, like for the Borland C++ Compiler, but I didn’t get to try them). Try to make either of them work with MinGW. Yeah right. Apart from that the build systems are cluttered all over the place and some of them are horrendously outdated.

So I decided to take a look into what could be done to improve the situation. A few months back we decided to switch to CMake based build systems at work (CMake is awesome, btw) and so I started porting CppUnit to make use of this build system. Unfortunately I realized very soon that it would be hard work getting ┬áall components to work again, as some of them did not get the love they deserved (I’m especially pointing at the Qt based test runner, which was still using the quite outdated Qt3 libraries). Getting the library itself to build was quite easy.

That said, in the meantime my changes made it into the official Git repository hosted at freedesktop.org and at the current state all components except the MFC based stuff are building just fine on all platforms supported by CMake and meeting the minimum compiler requirements – which should be all recent compilers starting with the MSVC 2005 compiler and GCC 4.x. So “recent” is quite relative in this sense. I’ve also almost completely rewritten the Qt Test Runner library and it now makes use of either Qt4 or Qt5. So, all of these changes can be found in the feature/cmake branch of the official CppUnit Git repository. If you’re interested, just clone it and build the good stuff. ­čÖé

Welcome

Welcome back to my updated private website. After years of spending almost no time to these pages, I now finally found some time to get them to a new level.

The first thing you may notice is the WordPress link on these pages – and people already using WordPress may notice that I’m still using the default Twenty Fourteen theme. So, yes, I’ve ported my website to WordPress and stopped telling myself that I will ever create my own Content Management System or Blog Engine. The reasons for this change seems quite obvious: it’s now way easier to add new posts and site management is much more flexible than it could ever have been with the old layout. Apart from that I recently set up another WordPress blog for my sister’s handicraft stuff and was quite impressed with the provided functionality and ease of configuration.

That said, I hope that I will finally be able to post more stuff on this website now. I may still tweak the layout and colors of the Twenty Fourteen theme as time passes by, but this will be done step by step as I find the time to do so.

So, what can you expect in the future? Well, I plan to post personal stuff, of course. But apart from that I also feel ready to post useful tips and tricks related to my passion (and coincidentally the things I do at my work): Software Engineering and Development. Currently I largely work on Embedded Linux platforms using C++ and the Qt libraries, so you may see posts regarding these topics in the near future. Currently this (Blog) site is still rather empty, but I think you’ll have fun with some content that’s already present (especially if you’re interested in gaming you may head over to the Downloads section ASAP ­čśë ).