Markus Jylhänkangas
Senior Software Engineer
Building software that scales, teams that deliver

Uses

This page documents the tools, hardware, and software I use for development, productivity, and general computing. Inspired by uses.tech.

Development Environment

Operating System

  • NixOS - Primary OS for reproducible and declarative system configuration
  • KDE Plasma - Desktop environment with excellent customization options
  • Tailscale - VPN mesh network for secure machine-to-machine communication

Editor & IDE

  • Emacs - Primary editor with extensive customization via modular configuration
  • Vertico/Consult/Corfu - Modern completion framework for Emacs
  • org-mode - For documentation, planning, and knowledge management
  • Magit - Git interface for Emacs, indispensable for version control

Terminal & Shell

  • Starship - Cross-shell prompt with Git integration

Development Tools

  • Nix/Flakes - Package management and development environments
  • just - Command runner for project-specific tasks
  • git - Version control system
  • Podman - Containerization for development and deployment

Languages & Runtimes

  • Go - Backend services and CLI tools
  • Haskell - Functional programming and learning exercises
  • C++ - Low-level systems programming
  • Python - Scripting and data processing
  • Nix - System configuration and package management

Productivity & Communication

Browser

  • Brave - Privacy-focused browser with excellent ad-blocking

Password Management

  • 1Password - Secure password management and 2FA

File Synchronization

  • Syncthing - Peer-to-peer file synchronization for selective documents

Hardware

Primary Development Machine

  • Desktop workstation running NixOS
  • Adequate RAM and storage for development workloads
  • Multiple monitor setup for productivity

Additional Hardware

  • Laptop with same NixOS + Home Manager configuration for portability
  • Lab server for self-hosted services and experimentation

Configuration Management

All configurations are managed declaratively using:

  • NixOS configurations for system-level settings
  • Home Manager for user environment management
  • Flakes for reproducible development environments
  • Git for version control of all configurations

The entire setup is designed for reproducibility, security, and productivity across multiple machines.