Matija Novak

Tools

Here you can find the main tools I use.

This page is an overview of the software I use most often. It is not meant to list every installed utility, but rather the tools that best represent how I work: a Linux-based environment, a strong command-line workflow, dependable development tools, and practical applications for media and documents.

Operating System

Linux is the practical base under the rest of the tool stack.

Linux is my operating system of choice because it fits naturally with web development, scripting, automation, local servers, and the general command-line workflow I prefer. It keeps the system inspectable and makes it easy to combine smaller tools into repeatable tasks.

I also value that Linux tends to age well, works comfortably on modest hardware, and supports open formats and open tooling. That matters to me more than visual novelty, especially for teaching, research, and maintainable personal projects. I also keep a custom kernel build in use, which fits well with the more hands-on and adjustable style of system maintenance I prefer.

My everyday desktop setup is based on bspwm with sxhkd, polybar, dunst, and dmenu. That combination keeps the environment lightweight, keyboard-oriented, and predictable, which is exactly what I want from the system layer beneath the rest of the tools.

For file management, I use lf on the terminal side and Nemo when a graphical file manager is the more practical choice.

Development

The main development tools I rely on in everyday work.

VSCodium

My main general-purpose editor for larger projects, broader navigation, and work that benefits from an integrated graphical environment, with the additional advantage of avoiding the default telemetry of the standard build.

Primary graphical editor

Neovim

The editor I use when I want a faster and more focused terminal-based workflow, both for direct editing and for larger projects where a keyboard-first environment is the better fit.

Primary terminal editor

Geany

A lightweight text editor that remains useful for quick edits and simpler tasks where I do not need a heavier development environment.

Lightweight text editor

Git

Still the baseline tool for version control, history inspection, and keeping changes reviewable and maintainable.

Version control

SQLite

A practical database for local tools, prototypes, and smaller systems where simplicity is more valuable than running a full database server.

Local data storage

Node.js

An essential part of current web tooling, local scripts, build steps, and JavaScript-based development work.

Web tooling and scripting

Java and Maven

Tools I keep available for Java-based work, builds, maintenance, and selected academic or legacy project contexts.

Java development

GDB and make

Useful for lower-level debugging and for keeping common project commands explicit, repeatable, and easy to rerun.

Debugging and build workflow

Ansible and Apache

Part of the practical infrastructure side of my setup, from local service work to configuration and deployment-oriented tasks.

Infrastructure and server work

Programming Languages

The main languages I use across teaching, web development, and private projects.

HTML and CSS

Foundational technologies for the web and a natural part of both teaching and hands-on front-end work.

Web structure and presentation

JavaScript

A core language for modern web interfaces, tooling, and many of the practical development workflows around web applications.

Web programming and tooling

PHP

Still relevant in my work through web development, practical server-side systems, and long-lived web stacks.

Server-side web development

Python

A practical language for scripting, data work, automation, and many of the smaller utilities that support teaching and research workflows.

Scripting and data-oriented work

Bash

A language I use constantly for shell scripting, automation, and for binding smaller tools together into practical command-line workflows.

Shell scripting and automation

R

A language I use for statistics and analytical work when the task is more closely tied to data exploration and quantitative analysis.

Statistics and data analysis

Java

A language I keep in regular use for academic work, maintenance, and the kinds of projects where the Java ecosystem is still the practical choice.

General and academic software development

C++

A language I use when performance, systems concepts, or lower-level control are closer to the centre of the task.

Systems and general programming

Assembly

Part of the lower-level side of my programming interests, especially when working close to machine architecture and operating-system topics, with NASM as the assembler I use in practice.

Low-level programming

Virtualization

Tools for isolated systems, testing, and infrastructure experiments.

QEMU

My main tool for virtual machines and system-level experimentation, especially when flexibility matters more than a polished interface.

Virtual machines and system testing

virt-manager

A practical graphical layer over virtualization tasks when I want easier overview and management of guest systems.

Virtualization management

Docker

Useful when I want lightweight isolated environments for development, services, or reproducible local setups.

Containers

Writing and Research

Tools for documents, references, reading, and formal writing.

LibreOffice

Useful for everyday document work, quick tables, and office-format compatibility when collaboration matters.

Office documents

LaTeX

The toolchain I prefer for more formal technical writing and document preparation, especially where structure and typographic control matter.

Formal writing

Zotero

My reference manager for collecting, organising, and reusing academic sources in a more disciplined way.

Reference management

Calibre

Useful for ebook management, format conversion, and keeping digital reading material in order.

Ebook library management

FFmpeg

A practical tool for converting and preparing media files when documents, video, or teaching materials need clean output.

Media preparation

Zathura

A lightweight document viewer that fits well with a keyboard-oriented desktop and quick reading workflow.

PDF and document viewing

Web and Media

Browsers, viewers, and media tools I use in everyday desktop work.

Floorp

My preferred browser for daily browsing and general web use.

Primary browser

Lynx

A text browser I still value for quick reading and simpler cases where a full graphical browser would be unnecessary.

Text-based browsing

Chromium

Useful as a secondary browser when I want an additional rendering engine for compatibility checks and general web testing.

Secondary browser

mpv

A straightforward media player I use for reliable video and audio playback.

Media playback

sxiv

A simple image viewer that matches the lightweight and keyboard-oriented style of the rest of the desktop.

Image viewing

digiKam

Useful when I need a more complete tool for browsing and organising photo collections.

Photo management

GIMP

A practical image editor for adjustments, cropping, annotation, and other smaller graphics tasks.

Image editing

SimpleScreenRecorder

A dependable screen recording tool for quick captures, demonstrations, and similar tasks.

Screen recording

ImageMagick

A useful image-processing tool I use less often, mostly when I need quick conversions, resizing, or other direct command-line image adjustments.

Command-line image processing

Security and Sync

Tools for credentials, synchronisation, and local backups.

KeePassXC

My password manager for local credential storage and disciplined handling of login data.

Password management

Syncthing

A practical tool for direct device-to-device synchronisation without needing a central cloud workflow for everything.

File synchronisation

LuckyBackup

A simple backup tool I use when I want routine copies and a clearer local backup workflow.

Backups