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.
- Linux: My sole operating system.
- 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!