• End of Life for Schneeflocke Service

    In the next days I will shutdown the main schneeflocke service. The need for secure Friend-2-Friend-P2P-Applications is decreasing, as servers/webspace get cheaper and cheaper and its now perfectly possible to share big files encrypted via DropBox and co. Less than 10 people are constantly using the sflx.net Service. Thank you for your support and see you on the next project.

    The Sourcecode of the Schneeflocke will still be available at GitHub. If you have your own Jabber server you can always use the Schneeflocke client with it.

    In the end I am still happy with the project as it taught me a lot

    • Asynchronous Networking in C++: The code contains a simple HTTP Client, a XMPP client, XMPP/BOSH, a new P2P-JSON-Protocol, simple NAT-Traversal Routines etc.
    • Multi Platform Development The code compiled to Win32, Linux and Mac (never released due to some bugs).
    • NoDB, function language Software Architecture: To get everything together there was a Scala Lift Based Web-Application to enable users to register, a MongoDB-based User database and a ejabberd-based Jabber Service for bootstrapping P2P Application. I won't open source the server stack as it is just to weird.
    • Agile Software Management Schneeflocke used continuous Integration for 2 Platforms (Linux, Win32) and was build (mostly) test-driven. Parts of the code are automatically generated in order to speed up network protocol development and to avoid any DRY violations.

    Thank you all and let's look forward to the next big thing!

  • Teaching CMake's Eclipse Plugin C++11

    Using CMake you usually enable C++11 using a compiler flag like:

    set(CMAKE_CXX_FLAGS "-std=c++11")

    This works well but seems not to be compatible with the Eclipse CDT4 Plugin. All include paths and predefined macros will be set to C++-03, thus Eclipse will miss new features like std::shared_ptr.

    The problem is, that the Eclipse Include Paths and predefined Macros are set by a compiler call directly. This happens inside /usr/local/share/cmake-2.8/Modules/CMakeExtraGeneratorDetermineCompilerMacrosAndIncludeDirs.cmake.

    execute_process(COMMAND ${_compilerExecutable} ${_arg1} -v -E -x ${_lang} -dD dummy
      ERROR_VARIABLE _gccOutput
      OUTPUT_VARIABLE _gccStdout )

    How can this be avoided? The simplest solution (as long as C++11 is not the default) seems to either patch CMakeExtraGeneratorDetermineCompilerMacrosAndIncludeDirs.cmake or wrap the compiler inside a Shellscript:

    # Place this in $HOME/bin/g++11 and make it executable
    /usr/bin/g++ -std=c++11 "$@"

    Now you can rerun CMake with the new "Compiler" and voila, Eclipse recognizes the new C++11 types.

    cmake ../your_source_dir -G "Eclipse CDT4 - Unix Makefiles" -DCMAKE_CXX_COMPILER=g++11

  • Ubuntu on Macbook Air, rEFIt Problems

    Just finished ~20h to get Ubuntu 12.10 running on a 2011 MacBook Air. The problem was that rEFIt does not work if your main partition is encrypted using FileVault2 (OSX' Disk Encryption).

    The solution: Install rEFIt in the hidden main system partition like documented here. Install Ubuntu 12.10 (64bit) with boot manager on EFI boot partition.

    What I also tried:

    • Installing rEFIt on another HFS+ Partition, no luck doesn't show up when booting and Alt pressed
    • Ubuntu 12.04 Mac - AMD64 with boot grub partition as documented in the Wiki, no luck doesn't show up

    Update: The bootloader seems to be removed after a couple of reboots :/

  • small platform library

    You'll find a new C++-Library called pcore on GitHub. It consinsts of some generic multiplatform code snippets shared by multiple projects from me and has no special dependencies (except boost headers). The code is copied from the almost abandoned Schneeflocke Project and some other private code bases. In the moment you'll find:

    • An easy Byte Array wrapper
    • Some math primitives
    • A very simple Logger
    • Some functional programming helpers like ABind and MemFun (it's like boost::bind for people like short readable stacktraces)

    As I became a Dad (yipiee) I am a bit busy so it's better not to promise any more features :)

  • smallcalc library released

    Smallcalc Library is released :) Check it out on Github. This time it's Apache Licensed, do with it whatever you want.

    Its the library which empowers µoscalc on iPad. An update for µoscalc is currently for review at Apple.

  • µoscalc 0.8 in AppStore now!

    Yehaa, µoscalc 0.8 is accepted in App Store now! :) You can download it here fore free, without Ads.

    Its a scientific calculator for the iPad which is inspired by traditional Unix terminals. So you have a history, can change the cursor, have a big set of functions and unlimited variables.

    It can also plot the graphs of functions of X, like f(x) = sin(x).

    If there are any problems please tell me, either in comments or via mail.

    I hope I'll find the time to write some documentation and get some new features. During the BETA-Period the App will be completely free of costs and without any Advertising.

    The calculation engine will be open sourced soon for Linux and OSX.

    Thanks to Jenny Lettow for the nice icons and thumbnails!

  • Play 2.0 slides online

    Here are the Slides of the Play 2.0 talk we had on the Scala User Group Berlin on 18.04.2012.


    You can find the Sample program on GitHub.

  • Schneeflocke 0.6.1

    Just released 0.6.1. It fixed some problems with adding other contacts (was always showing "Subscription Pending").


subscribe via RSS