Software I use, devices I love, and other things I recommend.
Hardware
- MacBook Pro, M1, 16GB RAMThis is my main machine for development and everyday use. The M1 chip is still fast and efficient, and 16GB of RAM has been plenty for my workflow. It’s quiet, reliable, and has excellent battery life. I enjoy working in macOS, and the hardware itself is well‑designed and enjoyable to use. On top of that, it fits right into the Apple ecosystem, which I rely on since I use other Apple devices and so does my family.
- MINISFORUM HX80G, Ryzen 7 5800H, 32GB RAM, RX 6600MMy main Windows machine. Despite its compact size, it’s powerful enough to handle demanding games like Star Citizen and runs smoothly for any Windows‑specific work I need to do. I use my MacBook more for development, but this system is my go‑to when I want to game or need access to Windows.
- GIGABYTE M27Q PRO: 27" 165Hz 1440pA solid and affordable monitor that pairs well with both my MacBook and HX80G. The 1440p resolution and 165Hz refresh rate make it great for gaming and everyday use, and the IPS panel provides colors that are accurate enough for work.
- Kinesis Advantage 360 ProAn ergonomic split keyboard with a contoured key‑well and columnar layout that helps reduce strain and finger movement. The Pro model runs ZMK, which makes it highly customizable, and I use Box White switches for a satisfying tactile feel. It took a short adjustment period, but it’s become one of the best purchases I’ve made.
- Logitech Lift Vertical Ergonomic MouseErgonomic vertical mouse that reduces wrist pronation and improves comfort. Compact and precise, it connects via Bluetooth or USB receiver and is comfortable for long sessions with quiet buttons. Runs on a single AAA battery with excellent battery life.
- Sennheiser HD 560 SMy favorite headphones for music, calls, gaming, and casual listening. They are open‑back with a neutral tuning and wide soundstage, which makes them great for the kind of music I enjoy and even suitable for music production. They’re also extremely comfortable and lightweight, so I can wear them for hours without fatigue.
- Apple AirPods Pro (2nd Generation)Wireless earbuds with excellent noise cancellation and a natural‑sounding transparency mode. They’re comfortable enough for long sessions, switch seamlessly between my devices, and the sound quality is pretty good.
- Apple iPhone 16 ProThe phone I use for communication, photos, and apps. I stick with the iPhone because it integrates well with my other Apple devices, and it makes everyday things like syncing, sharing, and staying connected with my family simple. It’s fast, reliable, and well-designed.
Everyday Apps
- NotionMy go‑to app for notes and references. I use it to keep track of ideas, write project notes, and organize reference material.
- TodoistThe app I use to manage tasks and keep track of what needs to get done. I like its simple design and the fact that it works well on any platform, including the browser. Having easy access from anywhere makes it reliable for staying organized.
- RaycastMy launcher of choice for quickly opening apps, searching files, and running commands. I like how fast it feels and how many extensions are available to customize it. It also works well as a central hub for small tasks and even doubles as a window manager. Raycast makes macOS so much better, and I can’t imagine using a Mac without it.
- 1PasswordSecurely stores passwords and sensitive information like payment details, licenses, crypto wallets, SSH keys, and secure notes. The autofill works reliably across apps and browsers, and the cross‑platform integration makes it easy to access everything wherever I’m working.
- RaindropMy bookmark manager for saving and organizing links, articles, and resources. I use it to keep track of documentation, blog posts, and references I want to revisit later. The tagging and search features make it easy to find what I need, and the cross‑platform sync means my collection is always available.
- T3 ChatThe AI chat assistant I use most often and the only one I pay for. It’s fast, has a clean interface, and feels great to use every day. I also like that it supports almost any model and is often one of the first apps to add the latest releases.
- PerplexityAnother AI chat assistant I use occasionally for exploring topics, answering technical questions, and summarizing articles or documentation. I like that it provides citations, which makes it easy to verify information or dig deeper when I need more context.
- Google ChromeAfter trying many browsers, I’ve ended up sticking with Chrome. I used Arc for a while but it’s no longer supported, Firefox often lags behind in supporting newer features and feels a little dated, Vivaldi is too busy for my taste, and Edge has features that seem useful at first but don’t hold up over time. Chrome may not have the most bells and whistles, but it’s fast, reliable, and consistent.
Dev Environment
- CursorMy main code editor. It’s very similar to VS Code, so it feels familiar, but it adds AI features that make a big difference in my workflow. The tab completion is the best I’ve used, and I like that the agentic mode lets me choose between different models depending on the task. I often use Claude Sonnet 4, GPT‑5, and GPT‑5 Mini.
- opencodeA tool I use in the terminal that works a lot like agentic mode in Cursor, but for command‑line tasks. It’s open source, has a nice terminal UI, and lets me choose from many different models depending on what I need.
- ZedAnother editor I’ve been exploring. It’s designed for speed and has a clean UI. The tab completion isn’t as strong as Cursor, but the overall editing experience feels better than both Cursor and VS Code. I don’t mind giving up Cursor’s agentic mode here since I can cover that with opencode in the terminal.
- PoimandresMy favorite dark theme for VS Code.
- MonaspaceA superfamily of fonts from GitHub that are designed for programming. My favorite font is Neon.
- GhosttyMy terminal of choice. It’s fast, lightweight, and has a modern feel without getting in the way. I like that it’s GPU‑accelerated and has thoughtful defaults that make it easy to use right away. It’s also open source.
Dev Tools
- ReactThe foundation of most of my projects. I like its component model and the ecosystem around it.
- Next.jsMy go-to React framework for production apps (for now). Features like file-based routing, dynamic HTML streaming, React Server Components, SSR, and the Image component make it hard to beat. It works seamlessly with Vercel, and the large ecosystem and active community make it easy to find solutions to any problem.
- AstroGreat for content-focused sites like this one. I like that it ships less JavaScript by default and integrates easily with React when I need it. The Content Collections feature makes working with Markdown and other content types straightforward, and the built-in Image component is very handy.
- TanStack StartMy current favorite React framework. It has isomorphic loaders, server functions with middleware, and a client‑first SSR model that only runs on the initial page load. It uses Vite and TanStack Router, which is the most type‑safe and feature‑rich router I’ve used. Since I already rely heavily on TanStack Query, it fits perfectly into my workflow and can be deployed almost anywhere.
- TanStack QueryMy go-to library for managing server state in React apps. It handles queries and mutations with caching, deduplication, prefetching, background updates, and automatic refetching, which removes a lot of the boilerplate around data fetching. It also makes loading and error states much easier to manage, and the built-in devtools are excellent for debugging. I use it in almost every project.
- TypeScriptI use TypeScript for almost everything. Strong typing makes refactoring safer and helps catch issues early, and the autocomplete in editors is a huge productivity boost. It makes working with modern frameworks and libraries much smoother.
- tRPCMy preferred way to build type-safe APIs. It provides end-to-end type safety between server and client, so I don’t have to write or maintain separate types. In the editor, I can click on a function in the client code and jump straight to its matching procedure on the server, which makes navigation much easier. It also provides useful middleware, and I like the clear organization that comes from structuring logic into procedures.
- Tailwind CSSMy preferred way to style apps. The utility-first approach works well with React’s component-oriented architecture and keeps styles in the component code instead of separate CSS files. It comes with great defaults for spacing, colors, and responsive design, and it’s easy to customize when needed. The ecosystem around it is also excellent.
- shadcn/uiA collection of prebuilt components I use to save time while keeping full flexibility. They also look great out of the box. Unlike monolithic component libraries, you own the code, which makes long-term maintenance easier and removes the need for escape hatches. They’re just React components built with Radix and styled with Tailwind, so they’re easy to customize and fit naturally into my projects.
- tweakcnA tool I use to quickly tweak and generate Tailwind styles for shadcn/ui.
- Biome.jsA fast formatter and linter I use instead of Prettier and ESLint.
- GitVersion control I use for everything.
- GitHubWhere I host my code and collaborate on projects.
- Zsh (Oh My Zsh)My shell of choice.
- Better AuthA comprehensive auth framework for TypeScript. It’s self-hosted, so I own the logic and avoid vendor lock-in, and it includes features like SSO and password reset out of the box. The API is simple, works with modern frameworks, and adapts to different databases.
- Drizzle ORMA lightweight, type-safe ORM with the schema defined in TypeScript, giving you autocomplete and strong typing. It supports serverless runtimes and HTTP-based drivers, which makes it a great fit for PlanetScale.
- UnpicA tool I use for responsive images across frameworks.
- Payload CMSA self-hosted, TypeScript-based headless CMS with collections and fields defined in code for type safety and autocomplete. It includes features like auth, access control, file uploads, and APIs. Since it’s built on top of Next.js, it can run directly inside a Next app and be deployed to Vercel alongside it.
Services
- VercelMy default choice for hosting Next.js and frontend apps. Git integration with preview deployments makes it easy to test and share changes, and rollbacks are seamless. It’s affordable if you manage it well, with spending limits, a built-in firewall, and attack challenge mode for protection. Fluid Compute has lowered costs, reduced cold starts, and improved performance.
- RailwayI often use Railway to quickly spin up databases or servers for development. It’s much easier than managing a VPS yourself, since it handles the setup and hosting for you while still giving the flexibility of running containers.
- SevallaI use Sevalla when I want something more production ready than Railway. It is like Vercel for VPS because it handles setup, Git integration with previews, networking, and even Cloudflare integration while still giving the flexibility of a full server.
- DigitalOceanI use their Droplets when I need a straightforward VPS. Simple, affordable, and reliable.
- CloudflareI use Cloudflare for DNS and CDN, and sometimes Workers.
- PlanetScaleA reliable and high‑performance serverless MySQL platform built on Vitess, the same technology that powers YouTube. One of my favorite features is database branching, which makes it easy to create preview deployments.
- UpstashA serverless data platform I mainly use for Redis, rate limiting, workflow, and search. It’s fast, pay‑as‑you‑go, and easy to integrate into modern React apps without managing infrastructure.
- ConvexMy main choice for databases in apps built with TypeScript. Convex provides a real-time backend with tRPC like type safety. It is transactional by design and also supports actions and file storage. It is hosted on PlanetScale so it has excellent performance and reliability, and it is built by the same team that created Dropbox.
- ClerkA hosted auth solution I reach for when I want something full-featured and easy to integrate.
- PostHogMy go-to for long-term product analytics like page views, conversions, and onboarding success. I like that it’s open source and self-hostable.
- AxiomA logging and analytics platform I use for short‑lived, high‑volume data like function response times, uptime, and request counts.
- SentryWhat I use for error tracking and performance monitoring. It’s reliable and easy to integrate.
- InngestA tool I use for background jobs and event-driven workflows. Makes async tasks much easier.
- CloudinaryA service I use for image hosting, transformations, and delivery.
- PorkbunMy domain registrar of choice. Simple, affordable, and reliable.
- ArcjetA security tool I use that provides bot detection, rate limiting, email validation, attack protection, and data redaction.
- CodeRabbitA code review assistant I use to speed up PR reviews and catch issues early.
- Sanity CMSA hosted headless CMS with a great content editing experience. I like it for projects where I want an easy-to-use studio for non-developers, and it provides a flexible API for pulling content into apps.
Design Tools
- FigmaThe industry-standard design tool and the one I use by default. I’m not a designer, so I mostly use it for simple UI work and collaboration as a developer.
- ExcalidrawMy favorite tool for quick sketches and diagrams.
- WhimsicalGreat for flowcharts, wireframes, and diagrams.
- MobbinA resource I use for design inspiration and UI patterns.
- v0A tool I use to quickly generate UI ideas and prototypes.