Tools I Use

My go-to toolkit for getting things done. This list showcases the software, applications, and online resources I rely on daily for productivity, development, and design projects.

This page outlines the tools I use in my daily workflow. I prioritise efficiency, minimalism, and open source solutions. My setup is heavily Linux-centric and reflects a preference for text-based workflows and lightweight tools. This list is always evolving, especially as I delve into new areas of technology.


Core Tools #

  • Operating System:
    • Linux: My sole operating system.
      • Ubuntu (Desktop & Servers): My current distribution for both desktop and server environments. Stable and reliable for everyday tasks and server deployments. Runs on HDD for desktop currently.
      • Arch Linux (Future): Planned installation on SSD for deep dives and custom configurations. Looking forward to the customisation and rolling release nature.
      • i3 Window Manager: My window manager of choice. Tiling and keyboard-driven workflow are essential for my productivity.
  • Hardware:
    • Laptop (Low-Spec): Intentionally using a less powerful laptop (4GB RAM initially, now 12GB RAM, HDD initially, now SSD planned). This ensures my projects are performant even on resource-constrained consumer devices, which is crucial for accessibility.
    • External Keyboard (Colemak-DH Layout): Standard QWERTY keyboard physically, but configured with Colemak-DH layout in Linux. Increased typing efficiency and comfort over time.
    • Split Ergonomic Keyboard (ZSA Moonlander - Future): Planned purchase for improved ergonomics, despite import challenges.
    • Monitor: Current laptop screen. Planning for a larger external monitor in the future, but always testing on standard, smaller screens to represent typical user setups.
    • External Mouse (Rarely Used): Available, but I primarily rely on keyboard navigation and shortcuts.
  • Web Browser:
    • Firefox: My primary browser for daily tasks.
    • Firefox Developer Edition (Private Mode): Used for browsing, web development and testing. Always runs in private mode for clean sessions – history, cookies, and cache are cleared on exit.
    • Chromium: Used occasionally for cross-browser testing only.
  • Browser Add-ons (Firefox):
    • uBlock Origin: Essential for ad blocking and privacy.
    • Vimium: Keyboard-based browser navigation for efficiency.
    • Firefox Containers: For isolating browsing contexts and enhancing privacy.
    • Canvas Blocker: To mitigate browser fingerprinting.
    • Chameleon: User-agent switcher (for testing and privacy).
    • Bitwarden: Crucial for security and managing numerous passwords.
  • DNS:
    • Quad9: My preferred DNS resolver for privacy and security.
  • Communication:
    • Email: My only form of digital communication. I prioritise focused work and family time over meetings and social media.

Developer Tools #

  • Code Editor/IDE:
    • Vim: My primary text editor for everything from quick edits to complex coding.
    • Neovim: My IDE of choice. Extensible, powerful, and configured with LazyVim.
  • Version Control:
    • Git: Essential for version control. Command-line only.
    • GitHub: Currently used for code hosting and collaboration.
    • Gitea (Future): Planning to migrate to a self-hosted Gitea instance for greater control and privacy.
  • Programming Languages:
    • Go: My primary language for backend development, tools, and general-purpose programming. Focus on performance and simplicity.
    • HTML5, CSS3, Vanilla JavaScript: For frontend development. Emphasis on clean, efficient, and framework-less JavaScript.
    • Odin: For experimental game development.
    • Python: Used for machine learning tasks.
    • PHP (Past): Experience with PHP from previous projects.
    • Node.JS (Past): Experience with Node.JS from previous projects.
  • Databases:
    • SQLite3: My first-class database choice, even for production. Lightweight, file-based, and often sufficient.
    • PostgreSQL: Used for projects requiring a more robust relational database.
    • MySQL (Past): Experience with MySQL from previous projects.
    • Qdrant: For vector database needs in machine learning and search applications.
  • Caching:
    • SQLite or Redis: Depending on project needs, using either SQLite or Redis for caching.
  • API Testing:
    • Curl: Curl with jq for API testing needs.
    • Browser Developer Tools: Often sufficient for simple API interactions. Generally prefer to avoid dedicated API testing tools if possible.
    • Postman (Past): Used in the past for API testing.
  • Testing & Debugging:
    • Go’s Built-in Testing: Utilising Go’s native testing for unit tests.
    • Browser Developer Tools: Essential for debugging frontend code.
    • Neovim Debugger (Future): Looking forward to explore Neovim’s debugger capabilities as they mature.
  • Package Managers:
    • npm: Used for JavaScript dependencies.
    • yarn/bun (Awareness): Aware of alternative package managers like Yarn and Bun, but haven’t extensively adopted them yet.
  • Containerisation:
    • No Docker (Currently): Not currently using Docker for most projects. Go’s ability to compile to self-contained executables often negates the need for containerisation in my current workflow.
    • Docker (Future): Docker is on the roadmap for my upcoming search engine project and potentially future projects that require more complex deployment environments.
  • Scripting & Automation:
    • Bash Scripting: Extensively used for system administration, automation, and workflow scripting.

Designer Tools #

  • UI/UX Design & Prototyping:
    • Paper (Seriously): My primary UI/UX design tool. Sketching and wireframing on paper are crucial for initial concept development and iteration.
    • Lunacy: Used for digital UI design and mockups after initial paper prototyping.
  • Illustration & Graphic Design:
    • Krita: My primary tool for digital painting and illustration.
    • GIMP & Inkscape: Still in my toolbelt for image editing and vector graphics when needed.
  • Animation:
    • CSS3 Transitions & Animations: For web-based animations and interactions.
    • Video Editors (Past): Experience with various video editors for small VFX and editing tasks in the past, but not a primary focus currently.
    • Lottie (Awareness): Aware of Lottie for vector animations on web and mobile, but not actively using it currently.

DevOps & System Administration Tools #

  • Scripting & Automation:
    • Bash Scripting: Essential for server automation and system administration tasks.
  • Operating System (Servers):
    • Ubuntu Server: My chosen OS for server deployments due to its stability and community support.

While my current projects often favour simpler deployments, I have more complex DevOps tools for complex needs, particularly for projects requiring scalability and containerisation. These include:

  • Ansible: For configuration management when server setup becomes more complex.
  • Docker & Docker Compose: For containerisation, especially relevant for my upcoming search engine project and potentially for isolating services in the future.
  • Kubernetes: Considered for orchestration if project scale demands it, though currently not in my primary workflow.
  • CI/CD (Jenkins, GitHub Actions): Exploring options for automating build and deployment pipelines as project complexity increases.
  • Cloud Platforms (AWS, Azure, GCP): I currently prefer self-hosting for most projects. But available if scalability or specific managed services become necessary.

Productivity & Utilities #

  • Note-Taking:
    • Vim: Used for text-based notes and documentation on my laptop.
    • Notally (Android): For note-taking on my Android device.
  • Search Engine:
    • Brave Search: Currently using Brave Search as a temporary solution.
    • Custom Search Engine (In Development): Actively developing my own self-hosted search engine, which will eventually replace Brave Search.
  • DNS & Firewall:
    • Rethink DNS + Firewall (Android): For enhanced privacy and control on my Android device.
  • Password Manager:
    • Bitwarden: Crucial for security and managing numerous passwords.

Currently Exploring & Learning #

Areas I’m actively exploring and technologies I’m currently learning:

  • C & Assembly: Delving deeper into low-level programming.
  • Blender: Learning 3D modelling and animation.
  • Game Development: Expanding my game development skills beyond experimental projects.
  • Graphics Programming: Exploring computer graphics concepts and techniques.
  • Processor Architecture: Learning about processor design and hardware fundamentals.
  • Machine Learning: Continuing to expand my knowledge and practical skills in machine learning.

This is a snapshot of my current toolset and learning journey. It’s constantly evolving as I explore new technologies and adapt to project requirements. Feel free to ask me about any of these tools or suggest others that align with my minimalist, and efficiency-focused workflow!