Files, folders, exports, aliases and functions

It‘s tempting to instinctively reach for databases, proprietary apps or complex SaaS tools when starting new projects, but it‘s worth remembering that there is an incredibly flexible set of tools baked right into the OS. What's more is that they have been tried and tested over many years. That's not to say that they should be used for everything, but they are a great foundation to start building, and often compliment other more complex tools. They are a great way to bootstrap your own custom computing environment, no matter the task.

The first thing might seem very obvious, but they are perhaps the most well known primitive in all of computing: files and folders. They are your agnostic storage layer. In fact on unix / linux operating systems, "everything is a file" is literally part of the entire philosophy. Flat files (markdown, plain text, etc) outlive platforms and apps. The are portable-human readable and naturally ready for AI/LLM tools without custom data pipelines. By designing a thoughtful naming hierarchy and using timestamped paths (e.g. content/posts/2026/2026-01-12-235959-title.md), your directory tree is your database. Standard filesystem tools handle sorting, filtering and indexing out of the box.

On the other hand Exports, aliases and functions form your personal workspace engine, turning your terminal into a tailored environment for any task.

  • Exports: Give you a way to set environment variables to hold values like the paths to often used directories, so your setup translates seamlessly across machines.

  • Aliases: Compress daily repetitive commands into 2-to-3 latter muscle memory commands that you can trigger in an instant. Launch applications with pre-prepared options, navigate quickly across the file system, and a lot more.

  • Functions: When aliases start getting too complex, switch to using functions, a way to add logic, accepting arguments, and chaining commands to automate workflows right inside your environment.

A new project is an evolutionary journey. The way to build great architectures is to evolve them out of real usage, real friction, actually using tools to achieve your goal, as opposed to guessing and building everything at once. You start with raw files and folders, add aliases for speed, write shell functions for multi-step tasks, and only build dedicated CLIs or servers when your workflow patterns solidify. Many of my projects started out as a collection of exports, aliases, and bash functions.

This might seem a bit complex, but remember with the help of LLMs, these days you can write functions and more complex custom scripts effortlessly.

Once you have your exports, aliases and functions you can easily add them to your .bashrc file so they are auto loaded when you boot the OS, ready in the background on every terminal you open. While I focus on linux systems, the same features are available on Windows via PowerShell profile scripts.

To give you a better idea of what is possible, take a look at my dotfiles.

Start simple, stay portable, and let your tools grow out of your actual needs.