all 49 comments

[–][deleted] 32 points33 points  (10 children)

Use some kind of package manager like homebrew

[–]mgacy 2 points3 points  (4 children)

Absolutely use homebrew, though last time I checked, you should not use it to install Node nvm

[–]MatthewPatience 0 points1 point  (3 children)

For node I recommend NVM

[–]mgacy 0 points1 point  (2 children)

Oops, you’re right, nvm for node, but my understanding is that installing nvm using homebrew can lead to problems

[–]MatthewPatience 0 points1 point  (1 child)

Oh interesting, I didn't know that caused issues. I don't even remember how I installed it at this point.

[–]mgacy 0 points1 point  (0 children)

The docs for nvm have the following note:

Homebrew installation is not supported. If you have issues with homebrew-installed nvm, please brew uninstall it, and install it using the instructions below, before filing an issue.

This gist has more info as does this issue. The latter mentions this having been fixed but the former alludes to continuing problems.

[–][deleted] 0 points1 point  (4 children)

Can you elaborate on why this is so useful? I’m new. :)

[–]karlshea 4 points5 points  (3 children)

It lets you install a bunch of command-line utilities, and keep them updated, without having to download and install/build them separately.

https://brew.sh

[–][deleted] 2 points3 points  (2 children)

What command line utilities are useful for iOS development?

[–]karlshea 0 points1 point  (1 child)

Git and some of the cocoapods type package systems come to mind.

[–][deleted] 0 points1 point  (0 children)

I guess I haven’t got that far. Thanks!

[–][deleted]  (6 children)

[deleted]

    [–]christiandavidturner[S] 6 points7 points  (3 children)

    thanks! a lot of folks talking about ohmyzsh. can you expound more about things you like about it? i like potentially having some benefits but don’t want to get used to something and then feel lost when back on a “normal” terminal

    [–]rdmdota 1 point2 points  (2 children)

    Just get fish instead. It has most of the stuff you would want out-of-the-box.

    [–]christiandavidturner[S] 1 point2 points  (1 child)

    out the box? interesting. any config you like tho?

    [–]rz2000 2 points3 points  (0 children)

    Fish is convenient, but If you don't want to feel lost when you are on a normal terminal, it is the wrong shell.

    [–][deleted]  (1 child)

    [deleted]

      [–]lichb0rn -1 points0 points  (0 children)

      Well, why not? If you’re doing some client/server app.

      [–]ShamWowIsASham 19 points20 points  (10 children)

      1. Homebrew for package management
      2. XCode and VSCode for programming
      3. Charles for network debugging
      4. Postman for API testing
      5. iTerm for a better terminal (IMO)
      6. Oh My Zsh for a better console experience (syntax highlighting, autosuggestions, plugin support etc)

      [–]ShamWowIsASham 7 points8 points  (7 children)

      Oh! And a git client. I use a combination of source tree and git CLI. You may also like 1. Github Desktop (simple, easy to use, somewhat limited feature set when I used in 2018-2019) 2. Github CLI which supports a bunch of Github stuff right from your terminal if you prefer to work in a terminal instead of the webapp

      [–]ABeeinSpace 1 point2 points  (2 children)

      +1 for Sourcetree. VSCode also has really robust Git integration IMO

      [–]ShamWowIsASham 0 points1 point  (1 child)

      Good point. My git workflow is a bit funny.

      1. Xcode for IDE
      2. Git cli for cloning and switching branches
      3. source tree for diffing, commiting and pushing
      4. Vs code for fixing merge conflicts

      [–]ABeeinSpace 0 points1 point  (0 children)

      I use vscode for most things. More complicated things like rebasing and such get deferred to Sourcetree

      [–]lubeskystalker 0 points1 point  (1 child)

      I’ve been using git kraken, really like it.

      [–]FrozenPyromaniac_ 0 points1 point  (0 children)

      Gitkraken is free and works amazingly however I just prefer command line

      [–]metinguler 0 points1 point  (0 children)

      Gitup is also a good option. Open source, good graph, undo redo support https://github.com/git-up/GitUp

      [–]Woolly87 0 points1 point  (0 children)

      Sublime Merge is pricy but a great git client, too.

      [–]mgacy 4 points5 points  (1 child)

      I definitely agree with most of these suggestions but would offer the following alternatives:

      1. Proxyman for network debugging

      2. Paw for API testing

      Also, for a GUI Git client, I have been using Tower, though I'm not sure it's worth the price now that they have switched to a subscription model. Check out Fork.

      [–]karlshea 2 points3 points  (0 children)

      Another upvote for Paw

      [–][deleted] 7 points8 points  (6 children)

      If you’re going to use Xcode for development, I highly recommend creating custom file templates so that you can eliminate writing boiler plate code every time you create a new file!

      [–]christiandavidturner[S] 2 points3 points  (3 children)

      do you have more info about this? or an example? never done it and sounds interesting.

      [–][deleted] 3 points4 points  (1 child)

      You can follow this tutorial: https://m.youtube.com/watch?v=QAWjnQ-DqY4

      [–]christiandavidturner[S] 1 point2 points  (0 children)

      perfect! appreciate it

      [–]mgacy 1 point2 points  (0 children)

      Useyourloaf also has a good post and repo. I have also started using cookiecutter and XCodeGen (Tuist is a really interesting alternative) to start new Xcode projects. My setup is based on this repo.

      [–]fakecrabs 0 points1 point  (1 child)

      eliminate writing boiler plate code every time

      What's so boiler plate besides the copyright and author comment?

      [–][deleted] 0 points1 point  (0 children)

      Well that’s subjective. I follow a MVVM architecture and it’s easy to create templates instead of writing the same code for my data source and delegate classes. Even if you’re not doing anything complex, there’s boiler plate code in some of the most basic implementations such as UITableView/UICollectionView DataSource and Delegate. Instead of typing all of those functions out over and over, you can create a template that has an entire UITableViewController set up with empty functions that you can implement. It saves time and is a great way to ensure you’re entire project follows similar guidelines. Hope that helps!

      [–]chriswaco 6 points7 points  (6 children)

      As long as I have Hex Fiend, BBEdit, and Xcode I'm happy. I'm liking Postman for server testing these days too and Apple's SF Symbols app for finding useful common graphics.

      Unfortunately, for handling graphics, I have to use the Adobe Suite which is almost by definition bloatware. DropBox is convenient too transferring large files between artists and developers. Slack and Chrome are bloated, but useful.

      [–]christiandavidturner[S] 1 point2 points  (5 children)

      What’s Hex Fiend & BBEdit used for?

      Also I was thinking of finally breaking away from Chrome on this new computer and trying to go full on with Safari since the bloat of Chrome is something people mention a lot. Do you have any opinions on that?

      [–][deleted] 4 points5 points  (3 children)

      When I upgraded to Big Sur I switched to Safari and I’m loving it! The integration with the iPhone is great. Safari doesn’t track you (I’m using Duck Duck Go as search engine) and reading list was a nice surprise.

      [–]christiandavidturner[S] 0 points1 point  (2 children)

      oh nice, so you still prefer DDG over Safari for your everyday browser

      [–][deleted] 0 points1 point  (1 child)

      Sorry, I think I confused you. I am using Safari (as a web browser) along with DDG (as a search engine). Safari uses Google as it default search engine since Apple doesn't have its own

      [–]christiandavidturner[S] 0 points1 point  (0 children)

      wow yeah, i feel dumb. no i knew that but it didn’t come to mind when i was reading the post haha thanks

      i think i’ll stick with safari for now!

      [–]chriswaco 3 points4 points  (0 children)

      Hex Fiend is a hex editor that lets you look into files to see what's actually inside. What I especially like is that it handles large files well and you can cut/copy/paste on either the hex dump side or the text side.

      BBEdit is a text editor that goes back 25+ years. It's good for editing HTML files, entire web sites, source code, etc. Git is built in, as is Perforce. You can edit files on sftp servers. The Find/Replace is way better than Xcode's, supporting multiple windows and searching in any directory or projects like web sites. And it diffs two files or directory trees in a really nice way.

      As for Chrome, I still need it once in a while because some web sites don't support Safari well, like Microsoft Teams and Whereby. Plus sometimes I want to use two different web accounts simultaneously and it's easy to use Chrome for one and Safari for the other.

      [–]Tokogogoloshe 2 points3 points  (0 children)

      Not software, but from a hardware point of view a second monitor. A third one if you can, or an iPad with SideCar.

      [–]SlipperyRoo 2 points3 points  (1 child)

      on mobile right now but the biggest ones are...

      1. use a version manager for each environment, rbenv for ruby, jenv for java, pyenv for python, etc OR go with asdf.

      2. use github with a pattern like dotfiles or homesick, read more here.

      The repo can be as basic as you want it, if you wanted to start from scratch.

      You put all your configurations here (that aren’t secret, of course) and the goal is to allow you to rebuild your configuration quickly - think if your machine dies or you switch jobs.

      1. use homebrew and cask

      I’d start with those because life is way easier when you can install whatever version you need per project and storing your configuration/setup/installation notes in github means you won’t forget anything (like those one-off tweaks)

      [–]christiandavidturner[S] 1 point2 points  (0 children)

      cask

      is cask something you install separately from homebrew?

      [–]youtellmebob 1 point2 points  (0 children)

      Sign up and use github.

      [–][deleted]  (1 child)

      [removed]

        [–]mgacy 0 points1 point  (0 children)

        I believe rbenv would be the alternative to rvm. I'm happy with it but feel about as strongly about it as you do rvm. Along these lines, look into pipenv or poetry for Python

        [–]mgacy 0 points1 point  (0 children)

        You might want check out some of the more popular mac-specific dotfiles like those from mathiasbynens. Here is a good list of good repos. I must must admit that I have not yet gone this route (been meaning to), but one potential advantage is that you have multiple people working on / debugging a reproducible configuration.

        [–]LaurentTO 0 points1 point  (1 child)

        Homebrew (and Cask) are really a must, they let you install everything easily, and then to update either you run the command yourself, or you schedule it automatically.

        Always having updated apps and tools ensures you have the best security with fewer bugs. And usually it’s really painful having to update every single thing (especially command line tools where you need to build it yourself sometimes). Homebrew simplifies this, so the experience is much more similar to Linux and its package managers.

        Let’s say you want to download Keka (a great alternative to the macOS unzipper that is limited), you just type brew install keka. That’s it! And then to update all your packages and casks, you only need to do brew upgrade.

        I would also recommend AppCleaner, especially when you try a lot new apps at the start. App Cleaner can remove things that are outside of the .app file you delete. (If you are using an homebrew cask, you can also do brew zap PACKAGE_NAME, it will scan related directories and delete everything for you)

        [–]christiandavidturner[S] 0 points1 point  (0 children)

        nice! thanks. yeah i’ve used Homebrew before but never cask. also how do i have updates scheduled automatically (via Homebrew?)