Posts

  • Trace LSP Communication to Visual Studio Code's Output Console

    It is possible to trace all language server protocol communication to Visual Studio Code’s output console, as described in the developer’s guide. The explanation in the guide is quite hard to understand, though. In this post, I explain more details about how to configure VSCode’s LSP implementation, so that the traces are printed out.

    Read more
  • Applying Bulk Changes to REL Model with Unix Tools

    One of the design philosophies I was following during the development of the REL framework was to carefully evaluate every feature, whether it is really needed within the framework or if there are already solutions available that can be leveraged. In my professional life, I regularly observe that every software product can be literally destroyed by pressing more and more features into it, to cover every obscure use case (“we always did it like that”) and at the same time sacrificing (code) quality and tests. This leads to unmaintainable software, which is bloated, slow and finally, when the original development team is not available anymore, will be replaced by something new. Focusing on a carefully selected set of features also means that other use cases have to be covered by alternative tools and approaches. The goal should always be to find the most efficient way to tackle a use case, by leveraging methods and tools that are already available and fit best. In today’s blog post, I am writing about bulk changes that have to be applied to the whole requirements model. It’s a use case every requirements engineer is very familiar with and I explain why I didn’t implement dedicated support for this into the framework and rather rely on the use of Unix tools to reach the goal.

    Read more
  • Optimizing REL Part 2 - Optimizing the C++ Code

    In the last couple of weeks, I have been focusing on optimizing REL’s C++ implementation, mainly for runtime performance and RAM consumption. In a series of blog posts, I will share my approach on how to measure performance metrics for C++ applications running on Linux, derive conclusions and optimize the code afterwards. This blog post will focus on C++ optimizations I applied to the code.

    Read more
  • Optimizing REL Part 1 - Performance Measurements

    In the last couple of weeks, I have been focusing on optimizing REL’s C++ implementation, mainly for runtime performance and RAM consumption. In a series of blog posts, I will share my approach on how to measure performance metrics for C++ applications running on Linux, derive conclusions and optimize the code afterwards. The first article talks about how to measure performance metrics in Linux, which tools are available and how to generate relevant data.

    Read more
  • Unit Testing with Google Test in Bazel

    Google Test is a well-established framework for unit tests in C++. It provides lots of features and can be used to write tests for own classes and their methods. Its integration in Bazel build system works quite well, with the benefit that it is not necessary to copy Google Test source files into the own repository or use Git submodules, as Google Test’s repository is downloaded on demand by Bazel during the build process. In this blog post, I will describe how REL uses Google Test. This approach can easily be transferred to every C++ development project that uses Bazel as build system.

    Read more
  • Building and Testing C++ Python Modules with Bazel

    While working on REL, I learned a lot about Bazel and its usage as build system in open source projects. In a series of blog posts, I will share these learnings and describe different approaches. Today’s blog post addresses the integration of C++-based Python modules into Bazel and the modelling of dependencies towards the corresponding Python-based tests.

    Read more
  • REL - Requirements Engineering Language

    In the last couple of weeks, I have been working on an open source project called REL - Requirements Engineering Language. Its core is a domain specific language, which enables requirements engineers to define a so called requirements model. The model contains type definitions and enumerations, which are then used to formally describe the actual “content”, i.e. the requirements written by developers. All data resides in text files, which can be committed into a git repository. Besides the DSL, the REL framework contains a (partially completed) implementation of the language server protocol, to get IDE support for the language, and python integration. For more technical details about the framework, have a look at the README.md on Github or the still growing developer’s guide.

    Read more
  • Website Relaunch

    I finally re-enabled my website sscit.de, after couple of years being disabled. In future, I plan to publish technical articles related to technology, mostly computer science, and maybe some related fields.

subscribe via RSS