My Software Stack - Essential Tools for Development and Productivity

12/4/2022

I'm always curious about what software and tools other developers use, and also keen about trying new stuff (in fact I am probably on most beta wait-lists of upcoming developer or productivity tools out there). So I thought it might be interesting for others to read what I use and recommend.

Editor/IDE

I spend most time developing with PHP, Go, Vue.js, Ionic and Swift. I used to work with VSCode for pretty much everything, but since the Apple Silicon era I switched to PHPStorm for PHP and frontend development.

I previously gave PHPStorm (JetBrains) a try on my ’19 Intel i9 MacBook Pro, but was really disappointed by the performance and how slow everything behave. On the M1 Max MBP this is less of an issue and I can totally live with the slower indexing and loading times in comparison to VSC; Therefore the features of this real IDE are very useful. It understands complex relations, offers automatic refactoring and the so-called "code inspections" are really powerful - whether it's migrating a PHP 7.4 project to 8.0 or finding bad code style in an old project - PHPStorm can do pretty much even automatically.

Same applies for frontend development. PHPStorm (which is basically Webstorm with additional PHP support) understands complex Vue and frontend projects well and in nearly all cases it's possible to jump to function definitions in cases where VSCode doesn't get it. When not working with PHP you can use Webstorm instead.

However, I am still using VSCode for my Go projects. The Go integration in VSCode is working pretty well and I personally didn't get along with GoLand (the Go IDE from JetBrains) that well.

For Swift and iOS/macOS development only Xcode is really usable - not my favorite editor, and it definitely has its issues, but especially for SwiftUI and live previews any alternative wouldn't make much sense.

GIT

Not much to say here, but Tower is by far the most intuitive and fast Git app out there (currently). It comes with shortcuts for pretty much everything, quick open/search for repositories, merge/pull request overviews, etc. The UI is great, and it continues to push/pull or fetch in the background which makes workflows much faster - open a repository, create a commit, press CMD + Shift + U to push and instantly close the window with CMD + W, and it handles it from the background (and sends a quick notification when it's done). Previously I tried SourceTree and Fork and switching to Tower was the best thing to do.

Image.png

Browser

Although I tend (or tended) to use four browsers simultaneously, I recently got beta access to and discovered Arc for myself.

Previously I liked the UI and tab groups of Safari a lot and was missing that in Firefox - Arc is Chromium based and has powerful spaces where you can split your tabs into and quickly switch between. So the shopping tabs are not standing in your way while working anymore, and you also don't need multiple browsers or separate windows which are difficult to manage.

Also, tabs can be pinned for each space - so you can configure to always have your most important pages/bookmarks present. The biggest difference to most browsers (UI-wise) is that tabs are located in the sidebar instead of the top. This might be very unusual at first, but you can get used to it fairly quickly.

It’s currently a closed beta, so you’ll have to sign up for their wait-list. However, I still have some invites left, so if you're interested in giving Arc a try, feel free to reach out - just DM me on Twitter (@dioncodes) (unless Elon made me leave it by now) or email me.

Image.png

However, for frontend development I am using the Firefox Developer Edition, which IMO has the best developer tools among the available browsers. Firefox is still a great browser in general, including better privacy features and performance than Chrome and a great UI - together with Safari (but only for personal stuff) it would be my second choice after Arc.

Don't hate me - I know Safari does have some issues and is often hated by developers - for personal browsing I still do like it sometimes as it also has iCloud-syncing tab groups, a great built-in reading list and probably the cleanest/most minimalistic design.

Notes

For all kind of note-taking (including markdown), writing and also managing complex documentations, I am using Craft for a while now. This blog post is also written in Craft - for publishing I can generate/copy the Markdown source code with a few clicks and paste it into my Blog. It's running natively and smoothly on macOS, iOS and iPadOS with fluent syncing.

Craft also has powerful team functionalities and co-editing, as well as nested notes/documents like Notion. There are different plans available, including a free tier, that probably suffices for many users. It also has just been added to the Setapp subscription (more on that later).

Image.png

Database Management

For MySQL/MariaDB databases I am using TablePlus. Although it isn't, it feels quite native and is great for creating/managing tables and inserting content without having to manually write SQL queries.

Image.png

ToDos and Task Management

This is actually a thing I am still unsure about. While I discovered Linear, a powerful and modern app/service for issue management (including features for Scrum workflows) this is a little overkill for personal task and todo management. Currently, I am mostly using Todoist for structuring my daily tasks and solo work, while waiting for Superlist - which is closed beta but looks really promising. I also tried Routine and reclaim.ai for task and time allocation, but didn't get quite warm with it yet. Currently, I am also checking out Things and TickTick, who both seem like great alternatives.

Time Tracking

Most of the time I am working on freelance projects, so accurate time tracking for every project is crucial for me. For years, I have been using Tyme for that purpose, which I am fairly happy with.

It comes with a handy menu bar item that shows the currently elapsed time for the current task and allows to quickly switch to another task or stop tracking. It can also flag times and projects as invoiced or received + export summaries to PDF, so I am also using it for invoicing and flagging which work was paid already and which not. Additionally, it has great statistic overviews, so I have an overview on how many hours I worked each month and how my workload was, or if I had much capacity left.

A little self-promotion; For very basic time tracking I made a little macOS menu bar application a while ago, called TinyStopwatch. It's available for free on the App Store (with a one time in-app-purchase for additional features like timers). It's pretty simple, but people liked it and I get a lot of feedback that they are actually using it for time-tracking.

Terminal

I am using iTerm2 as my default shell, plus the built-in ones in PHPStorm and VSCode. iTerm just has a few more customization options and shortcuts, and I was able to make it look more the way I wanted. In addition to that I can recommend a prompt/theme like Powerlevel10k, fig.io for autocompletion or starship.rs to get the most out of your shells - like displaying the current branch etc.

Image.png

Design and Graphics

Although I temporarily switched to Sketch for a few projects, I am still getting along with Adobe XD the most. It does lack a few features (like multi shadow support for single objects) but it's very intuitive to use, has powerful transition and prototyping features including shared browser previews, and is working well for realizing most designs or wireframes before starting to build.

Regarding images, I recently switched from Adobe Photoshop to Pixelmator Pro. The latter is soo much smoother and running faster (especially on Apple Silicon) that I regret not giving it a try earlier. It sure doesn't have all the features that PS has to offer, but for my purposes it suffices easily and probably, unless your main work is working with graphics, it would fit your needs as well.

File Transfers / (S)FTP Client

Since continuous deployments (using GitHub Actions, Gitlab CI, etc.) became pretty much standard for modern web projects, (S)FTP is not used that often - but sometimes it’s still required to manually connect to a server or also to a service like AWS S3. For that I’ve been using Transmit for years. I won’t go too much into detail, but it's running natively and very smoothly on macOS and got everything you need. I haven’t seen another client as good yet.

Video Editing

For a long time I’ve been using Adobe’s software lineup including Premiere and After Effects. But since I moved from Photoshop to Pixelmator I dared to cancel my CreativeCloud Subscription, as I didn’t spend too much time in Adobe software (except XD) anymore. That’s why I’m currently learning Final Cut Pro and Motion. The performance is definitely a plus - I can’t entirely compare them yet, though.

Productivity and Other Tools

Raycast

As a spotlight replacement I recently discovered Raycast, which comes with tons of extensions and powerful calculators, etc. You can do many tasks right from the always available command bar - I wrote a dedicated blog post about it, you can find here.

Image.png

Clipboard Manager

As a clipboard manager I am using Paste. There are free alternatives, but I prefer this one due to its clean and modern UI. It’s also included in the Setapp subscription.

Image.png

Image Optimization/Compression Tool

Another great little tool is ImageOptim, which has powerful image compression - including lossless mode. Any image I use for the web or apps gets optimized by ImageOptim before.

Communication

Regarding communication, I am mostly working with Slack for anything work-related.

Screenshots

For creating and (basic) editing of screenshots I can recommend CleanShot X. Other than macOS built-in screenshot functionalities it keeps a history (you can take multiple screenshots and then edit them afterwards) and has useful editing options including blurring, text and shapes. It also features interactive scroll capturing of long pages, screen video recording with compression/resizing and some cloud store for sharing screenshots and -videos.

Colors

Sip is a powerful color picker that has a detailed history and can copy the measured colors in many formats (like CSS Hex, Swift UIColor, etc.).

News/RSS

My favorite RSS reader is Reeder (native for macOS, iOS and iPadOS), by far the best looking minimalistic one with sync between all Apple OS.

Image.png

Setapp

Some apps mentioned above (Craft, TablePlus, Paste, Sip and CleanShot X) are included in the Setapp subscription. You get a lot of useful software, especially for developers, for a relatively cheap monthly subscription fee. I used a lot that is included previously, so I even saved money by switching to Setapp - and I got access to many more apps that I use by now.

Whether the subscription is worth it for you obviously depends on how many apps you’ll use (or would pay separately instead). You should take a look at their library and sum up how much you would pay for the apps you need. If you're interested, you can get a free month access to all included apps with my invitation link:

Free month of Setapp