--- title: "Writing tasks: Introduction" sidebarTitle: "Introduction" description: "Tasks are the core of Trigger.dev. They are long-running processes that are triggered by events." --- Before digging deeper into the details of writing tasks, you should read the [fundamentals of tasks](/tasks-overview) to understand what tasks are and how they work. ## Writing tasks | Topic | Description | | ----------------------------------------------------| ------------------------------------------------------------------------------------------------------------------------- | | [Logging](/logging) | View and send logs and traces from your tasks. | | [Errors & retrying](/errors-retrying) | How to deal with errors and write reliable tasks. | | [Wait](/wait) | Wait for periods of time or for external events to occur before continuing. | | [Concurrency & Queues](/queue-concurrency) | Configure what you want to happen when there is more than one run at a time. | | [Versioning](/versioning) | How versioning works. | | [Machines](/machines) | Configure the CPU and RAM of the machine your task runs on | | [Idempotency](/idempotency) | Protect against mutations happening twice. | | [Replaying](/replaying) | You can replay a single task or many at once with a new version of your code. | | [Notifications](/notifications) | Send realtime notifications from your task that you can subscribe to from your backend or frontend. |