My Tech Stack

Hardware

  • Laptop: Macbook M1 Pro 64 GB RAM (★★★★)
  • Keyboard: Happy Hacking Keyboard Hybrid Type-S (★★★★)
  • Monitor: Dell S3221QS (★★★☆)
  • Mouse: Logitech G305 (★★★☆)
  • Microphone: Shure MV7 (★★★★)
  • Camera: Sony a6000 with Sigma 16mm F1.4 connected via Elgato Cam Link 4k (★★★☆)
image
image

Software

Recommended Software to Install

  • Cursor
  • DataGrip or Postico for SQL
  • MongoDB Compass as a MongoDB GUI
  • Hoppscotch for API Building (Postman Alternative)

Recommended VSCode/Cursor Extensions

  • Prettier
  • Vue - Official
  • Tailwind CSS IntelliSense
  • Git Extension Pack
  • Conventional Commits
  • Pretty Typescript Errors
  • TODO Highlight
  • Copilot (if using VSCode)

Products

SaaS products that I have used and would fully recommend

  1. Linear: Engineering project management
  2. Stripe: Subscription billing
  3. Postmark: Transactional email delivery service
  4. Hookdeck: Webhook infrastructure management

Products I have used and like

  1. Slack: Daily communication
  2. Notion: Internal knowledge base
  3. Super.so: For hosting Notion pages on a custom domain
  4. Serverless.com: Serverless application development and deployment
  5. SavvyCal: Scheduling with external clients
  6. Intercom: Support and user messaging

How I Use Linear for Project Management

Your goal should be to maximize meaningful deployed work by minimizing work-in-progress and minimizing unplanned work.

Task Status

By default, a task should be in the “Backlog” state. It should only be cleared for “Todo” if all designs are ready (or if none are needed), and it will definitely be worked on in the next 1-2 weeks. “In Progress” indicates active development on the task.

You want to minimize the total amount of work that is in one of the below “Started” states.

  1. Backlog
    1. Backlog
  2. Unstarted
    1. Todo
  3. Started
    1. Design Needed: Fresh design or iteration needed
    2. Holding: De-prioritized for higher priority work
    3. In Progress: Actively developing
    4. In Review: Pull request is being Reviewed
  4. Completed
    1. Done

Task Labels

Task labels are used in aggregate to see where we are working, and where that work is coming from. We should be spending roughly 20% of sprint time on tech improvements, and as little time as possible on unplanned work. Each task should have an entry in each of the following categories

  1. Work Type
    1. Product Feature/Improvement
    2. Tech Improvement e.g. upgrading codebase to Vue 3
    3. Internal Business Project e.g. installing Mixpanel to track marketing attribution
  2. Source
    1. Planned e.g. scheduled work
    2. Unplanned e.g. firefighting work or urgent customer requests
  3. Product
    1. Our product suite + services + general (if applicable across our product suite)

Task Estimates

1 point = half a developer day

0 points should only be assigned if the work will take less than 30 minutes, including checking in code and deploying. Anything more than 30 minutes should be counted as at least 1 point, to account for context switching. When possible, group small and related tasks.

Estimation is difficult, and gets more difficult on large projects. As much as possible, try to get task sizes under 2 developer days (4 points).

Views

The 3 most important views to create are

  1. Kanban by Person
  2. Kanban by Project
  3. Small Wins

Recommended Reading

Software Dev and DevOps

Personal Dev