Semipol Blog Index

  1. Sharing the git config across different computers with individual modifications

    As I am working on a lot of different computer I wanted to share some of my configuration files across these computers to have similar working environments on all of the machines. An easy solution to do this is e.g. for git to put the .gitconfig file (along with other configuration files) into a folder inside the Dropbox (or other syncing tool),...

    Read more
  2. How to set up a build system in C++, Python and Java

    I don't know why, but setting up the build system for a new software project and maintaining it seems to be something people are always afraid of. I've often heard people say "Eclipse does the job. It's just additional work." This usually leads to confusion and a lot of bulk and weird solutions several days later when the project starts to evolve...

    Read more
  3. Python logging configuration

    In case you ever wondered how to correctly configure the python logging system, e.g. from files and configuration server, this might be a useful link, which I hadn't see before: Logging Cookbook.

    Read more
  4. Difference between comparisons with == and is in Python

    In Python, two operators exist to perform equality comparisons: == and is. Often you can read instructions like "When comparing to None, always use is instead of ==", but the real reason is not explained. However, looking at the language expression specification section of the Python manual you can find the difference: "The operators is and is not

    Read more
  5. Android Update to CyanogenMod 10

    I finally took the time and updated my "old" Samsung Galaxy S+ (GT i9001) from the Stock 2.3.6 version of Android to CyanogenMod 10, beta 4. I really should have done this earlier. The stock version was getting slower and slower over time without any apparent reason and no update to a newer version was expected from Samsung. It seemed that especially...

    Read more
  6. Website Updates

    After serveral years I finally managed to restructure my websites. The blog here was kind of infrequently used and the photography section pointed to my flickr account using a flash viewer. Especially with this photography portfoilio there were several things that I did not like:

    First of all this wasn't a portfolio at all with the lack of any selection...

    Read more
  7. copyiptcandxmp updated

    I have updated the script formerly called "fixgpsandtags" so that it can now be used to more generally copy IPTC and XMP data to processed images. Therefore it is now called "copyiptcandxmp". Such a step is often necessary because raw processing tools ignore XMP or IPTC completely. This script simplifies the process because several patterns can be...

    Read more
  8. Relative RPath Settings with CMake

    The run-time search path (rpath) defines paths to search for dynamic libraries when executing a program. It is a mechanism on Linux parallel to the LD_LIBRARY_PATH environment variable, which is another hint to find dynamic libraries.

    Usually, it is a good idea to make software which you built relocatable. This means that created binaries can be...

    Read more
  9. Using Dependency Tracking in Jenkins with CMake-based C++ Projects

    If you are building multiple related software projects with a continuous integration server one important aspect is to be notified when changes in an upstream job break the build or tests for a downstream job. This involves knowing which exact build numbers of the upstream and the downstream job are involved.

    The Jenkins continuous integration server...

    Read more
  10. Gcov Coverage Reports in Jenkins

    I am currently evaluating the applicability and limitations of the Jenkins continuous integration server for C++ development. Besides several limitations which are mainly caused by the complexity of C++, Jenkins provides a solid basis for continuous integration of C++ projects.

    One thing which I was not happy with so far was the missing integration...

    Read more