Tools

How to get disassembled ELF file in Vivado/Vitis

Sometimes we need to debug a module containing a microprocessor implemented in FPGA. Often the program is enclosed in ELF file – leaving us with no access to the program source code. In these cases we can learn how the program functions by analyzing the machine code for the microprocessor. But first, the assembly code needs to be extracted from the ELF file. Let me show you how to get disassembled code from ELF file in Vivado/Vitis.

Sort, permute or remove duplicate lines in Sublime Text

For years I have not noticed a built-in feature of my favorite code editor – Sublime Text. I have recently needed to deduplicate lines in a file and though I will need an additional package. And that’s when I discovered it’s an existing feature in default Sublime Text configuration. So particularly for my future reference, I decided to create this post.

Alfred Workflow for calculating SI value inverse

Recently I have finally decided to try Alfred – a well known productivity tool for macOS. Especially with additional Powerpack it enables a ton of automation and customization. A lot of Alfred Workflows can be found on the internet, but I couldn’t find one for calculating an inverse of numbers containing SI prefix. So I have decided to create it by myself.

Insert Nums – my favorite code editor plugin

Any modern code editor supports plugins to extend its capabilities. Sometimes they are called “packages” or “extensions” etc. There is a plugin which greatly improved my workflow but I think it’s overlooked by many developers – Insert Nums. Since I started using this package, it became my favorite plugin. There are versions for at least two of the most popular code editors: Sublime Text and Visual Studio Code.

Handy AppleScript libraries

I have recently came across several amazingly useful libraries for MacOS tasks automation with AppleScript. Even though they exists for several years now, for a long time I had no idea these existed. So I’ve decided to share my discovery here and hope it will help somebody in the future.

GitLab CI template: YAML anchor vs. ‘extends’ keyword

Creating a CI pipeline can get tedious quite quickly. Fortunately, there are a couple of ways to avoid creating multiple similar jobs. In case of GitLab’s .gitlab-ci.yml files, we can use job templates. Based on templates, we can easily define the actual jobs. The two most common methods to use a GitLab CI template are YAML anchors and ‘extends’ keyword. These are very similar, but there is at least one not obvious difference.

LaTeX documents accessible in the repository with CI

LaTeX is a very popular and in my opinion an optimal tool for creating documents larger than a couple of pages. It is often used for technical documentation and kept in a version control system, such as git. Usually, only LaTeX source files are stored in a repository, unlike the final PDF files. But is there a way to make a generated PDF document always up to date and accessible in the repository, without versioning the actual file? It turns out that it’s possible with continuous integration (CI).

The best way to use monitor(s) with multiple computers

For quite some time now my desk setup consists of two monitors and several computers connected to them. The number varies between 2 up to 4, which is a maximum number of inputs my monitors support. Sometimes I use one of the monitors with one computer, and the second with a different computer. Other times I use both monitors with the same computer and switch both of them to use with another PC. I’ve tried multiple different ways to conveniently control which computer’s screen is displayed and I think I’ve found the best solution.