Software Engineering

Creating values through software development using C++, Python, and JavaScript under Linux/Unix OS.

Our Solutions

Design and DevOps

SOLID architecture in C++ and Python. CI/CD pipeline using Gitlab/GitHub.

Source code analysis

Code analysis, call graph visualization, debugging, and optimization.

Interactive Data Visualization

Either for a desktop app or a web app. The data can be obtained from a static Excel data or by web crawling.

Test Frameworks

Embedded software products need a systematic integration test between the software and the hardware.

Degoogling Android Phone

Privacy in our smartphone is becoming more important. Big tech offer many useful solutions while they are collecting our private data. Using Android OS on our phone without Google services is one big step to more privacy in our life.

Latest Articles and Videos

14 January 2023

Understanding Inter-Process Communications in C++ using ZeroMQ

You want to start a new project with several threads or processes that communicate with each other and are confused how to implement it? Or maybe you want to refactor an old buggy software that involves the inter-thread/process communication (IPC)? This article should give you a fast and deep understanding about the IPC. But first let we refresh our knowledge.

Learn More
20 May 2020

An Asset Portfolio Watchlist That Respects Your Privacy

Introducing the AssetFolio application that mainly designs to solve the privacy issue of the online watchlist. The application tracks all of the investment activities and tracks the price of security assets. In the watchlist mode, we can see the realtime price of our securities, see the picture below. The application is open-source and you can see the code and build by yourself for your desktop application.

Learn More
18 April 2019

Using PySerial for Hardware Software Test

Imagine we develop a software for a microcontroller or any hardware written in C/C++. Then, we flash the software on the hardware. So now, how can we test the behavior of the software on the real hardware?

Learn More
03 March 2019

How to Easily Build an Old GCC on Fedora 29

As a software developer, sometimes I need to build an older GCC. The reasons to build such a GCC may vary, from the old software to be built to the desktop OS which doesn't install the appropriate GCC toolchain. In my last case, it was the incompatibility between Fedora 29 which has the version 8.2.1 installed, and an open-source software module which needs CUDA 9.2 or 10.0.

Learn More
31 January 2019

Book Review: The Hacker's Guide to Python a.k.a Serious Python

In my opinion, the book may be suitable for data scientists and intermediate Python developer who lacks some Python system tool or for intermediate Python developer. The book provides a deep inside of the Python world and the history of some modules and libraries in the past years. There are also six interviews with some experts which share their interesting experience.

Learn More
26 December 2018

How to Manage Software Documentation in a Good Way

I believe that documentation plays a vital part in any software project. In reality, however, during my involvement in different projects of large corporations, their documentation quality is far beyond the established open-source projects. Several times when I join a software project, the documents are not structured and spreads in different places.

Learn More
30 November 2018

How to Setup Nginx for a PHP application on Fedora 28/29

After switching from Linux Mint to Fedora 28/29 on my laptop, I had difficulties to run my Grav CMS or other PHP projects on Fedora OS. In the last 2 months, I've learned several things about the different between the Ubuntu-based OS and the RHEL-based OS. They are similar but some small differences can take so much time to run one application from other OS to another OS.

Learn More
25 November 2018

My Take-Aways after Attending PyCon.DE 2018 in Karlsruhe

On October 24th until 26th 2018, I attended my second german Python Conference (PyCon.DE) in Karlsruhe. During the three days venue, I've met many interesting persons and attending interesting talks. In this article, I would like to write down the list and the take- away messages from the conference, so that in future I can recap it again.

Learn More
01 November 2018

Black Screen Issue on Fedora 29 with Nvidia GPU

Today, I spent about 4 hours only to figure out why my Fedora 29 shows a black screen after the login screen. I've already used Fedora since 3 months. After using Ubuntu, Xubuntu, Linux Mint, and Manjaro, I decided to try Fedora due to the SE Linux security feature. At the beginning, I encountered a lot of issues since installing Nvidia driver in Linux is not so easy like other drivers.

Learn More
03 October 2018

Understanding udev and Basic USB Devices in Linux

In this article, I would like to share my experience using _udev_ in a Linux OS.

Learn More
11 July 2018

Singleton Pattern in C++

In 2008 I've learned about singleton during my undergraduate studies. At that time I tried to learn all the design patterns of the software development techniques. The reference book was the 'Design Patterns: Elements of Reuseable' by Erich Gamma, John Vlissides, Ralph Johnson, and Richard Helm. The book describes about the motivation, the concept and provides some general example codes. Even though I did several exercises, it was very difficult to fully understand and to keep it in my brain.

Learn More
19 February 2018

Writing Modern CMake Files

If you are a C++ developer, the word CMake shall not be a new word for you. The first time I know _CMake_ was back in 2009 when I join the Hector team at TU Darmstadt to develop the elevation map from scratch. At that time, I learned the basic of _CMake_ and then used it very minimal just to build my own component. Last year during the Self-Driving Car Engineer Nanodegree, I used and write _CMake_ to build some C++ files. In November 2017, I encountered a challenge where I have to build software modules and libraries with _CMake_ for multi-variant projects.

Learn More
07 January 2018

A Retrospect of my Autonomous Driving Knowledge

I was interested in the autonomous driving technology since 2009 where I did my Bachelor thesis at Honda Research Institute Europe in Offenbach. At that time, many students and researchers trying to analyze the camera images using the image processing algorithms and neural networks. During my Master degree, I learned the basic of Computer Vision, Machine Learning, and Robotics.

Learn More
12 December 2017

Fixing Warnings in Pelican

In this article, I'll document warnings that I've encounter so far using the Pelican library to build a blog.

Learn More
26 November 2017

Understanding the Process Crash and Backtracing in Linux

In the infotainment system projects which I involved, the most critical issues are the application crashes. In Linux, if an application crash occurs, the Linux kernel will send a signal to the application process and write a core file (coredump).

Learn More
17 November 2017

Building an Encrypted Website or Blog

In my last article, I wrote about how we can build a professional personal site without monthly fees. This time I would like to share how we can build **our own secure** website or blog. _secure_ means here that our website uses the secure protocol (HTTPS) instead of HTTP. In short, HTTPS is HTTP over SSL with a certificate authentication. _Our own website_ means that we have control of our data. As we know from the late leaks, the internet is fully monitored by several organizations which we don't know. Thus, HTTPS is very important to be utilized if we want to build a secure website.

Learn More
12 October 2017

Building a Personal Site using Pelican

I would like to share my experience building this site using the Pelican site generator. In the last two years, I was trying several CMS, web frameworks and static-site generators for different purposes. At the end, I found out that Pelican is the most suitable for my requirements.

Learn More