General description – what the hell will we try to do here: When you find yourself chasing memory leaks, or Heisenbugs for a long time chances are you will have a huge debug log. If the disk gets full and you need only the logs at the end when the problem raises it’s ugly head, use the technique described here.   The technique involves: closing the file handle where the process writes the logs currently – int creat(const char *path, mode_t mode); creating a new…Continue Reading “Hot-swapping a log file on a running process w/ GDB w/o stopping it”

Doxygen allows the generation of documentation from source code files for various languages: C/C++, C#, JAVA, Python and others. This is a short document on how to work with it, serving as a reminder for me and maybe helping others at the same time.

Continue Reading "How To: Doxygen"

YouTube videos can take a massive amount of time to upload. For example, 30 FPS, MP4 video of size 870,4 MB takes around 2 hours on < 1Mbps upload speeds: To minimize that time I use a simple workflow (i) and a script that feeds video files into HandBrake video transcoder (ii). You can find the installation steps for HandBrake here. My workflow is simple: - Download the videos from my phone/camera to my laptop; - Add them to appropriate folders that I create based...Continue Reading “How To: Batch prepare videos to upload to youtube with HandBrake”

Attention: this was supposed to be a long-ish tutorial when it was first published. While it was in the process of being written PhantomJs was deprecated. Everybody and their mama are using puppeteer for all the tasks that other used PhantomJs for.   How to get the HTTP response code of the page: If you mainly used curl for troubleshooting, you actually will be surprised that HTTP response code is not readily available on PJS … although its not that hard to get either console.log('—-…Continue Reading “How to: PhantomJs”

The philosophizing … There are dimensions of software products that differentiate them from other systems. To a large extent compatibility between iterations is one such dimension. This probably is because of the tempo at which software pieces are being delivered compared to other systems – if you want to release often and build the piece incrementally you better make sure that people will not have to waste time recreating everything they have done with the previous versions… or that the added value of the new…Continue Reading “How To: Exporting dashboards, visualizations and saved searches from Kibana v4.0.1 … and some software philosophizing”