Skip to main content

My developer toolkit 2018 (Mac)

Background

Last year I had written a post about my developer toolkit 2017 (Mac). There are some modifications this year. For last 1 year, I have used Mac Book Pro as my primary laptop. As such many of the tools that I have been using are more open source. Its an opportunity to list the current state of things. Lets get started by looking at this years developer toolkit.

Terminal utilities

iTerm2 with OhMyZsh  – continued from past

iTerm has become quite integral part of my life on Mac. I love the colorful terminal with the Powerlevel9K theme. Although the code editors and IDE's like Visual Studio Code and IntelliJ Idea offer integrated terminals, I still prefer the dedicated iTerm 2 terminal in standalone mode with full screen.

Addition of Powerlevel9k theme

The modern day terminals are no longer black and white. We can modify them with themes to make them sleek and sexy. The post from Jessica Dean helped me to add more jazz to my terminal window.

Tabset plugin for iterm2 – continued from past

Tabset is still one of my favorite plugin for iterm2. I like to have the tabs with iterm named like one for Github related activities, others for project specific activities. Examples include using a dedicated tab for Kubernetes while working with kubectl or one for Azure CLI, one for Powershell etc. I have seen many people use tmux to split the terminal window into multiple sections. Personally I still feel very comfortable with a single tab view in iTerm.

kubectl apply

Code Editors

Visual Studio Code – continued from past

Visual Studio Code or VS Code also commonly known as code has become my primary code editor over the past year. All the public talks that I have done over the last year have been done using VS Code. I love the simplicity and the minimalistic approach taken by the designers of code. Over the time  I have added some extensions / plugins which have made working with code even more pleasing and improved the overall user experience. Here are the list of extensions I have currently with VS Code

VS Code

I like the dark Monokai theme. On the Retina display the colors really stand out and gives lot more incentive to code with passion Smile.

IntelliJ Idea community edition – continued from past

IntelliJ idea is one of the best IDE for Java development. I use it when I want to do Java or Scala development. I use following plugins with IntelliJ

IntelliJ idea

As compared to VS Code, the Material UI theme along with the file icons make IntelliJ a deadly combination. Gone are the days when we would look at black & white code editors and IDE’s.

GitHub Desktop – continued from past

It is very rare that I switch to the UI of GitHub Desktop. Many of the features of GitHub Desktop are also available via the source code management plugins and extensions available within VS Code and IntelliJ Idea. Once in a while I find the need to check the history and I find Github desktop helpful in that case. For regular operations like cloning Github repositories, doing checkins etc. I do them from iTerm terminal or from within the IDE.

SQL Operations Studio – Newly added

While working with databases, you can never underestimate the power of client connectivity tools. While on Windows SQL Server Management Studio (SSMS) was my preferred client, I found recently launched SQL Operations Studio to be quite useful. I am not a full time DBA so the bare minimum features provided by this client is enough for me to run simple select queries and to manage creation of databases and other SQL server objects.

Virtualization software

Docker – continued from past

Docker has become integral part of my life over the last year. I have used it almost every time during my public talks at conferences and meetups. Apart from using it for my public demos, I have used it for experimentations related to Kafka Connect, trying out SQL Server 2017 Linux features. Now a days I look for availability of Docker images for any new stuff I wish to experiment. It allows me to keep my system clean as I can delete the image from my machine without leaving any side effect behind.

Minikube – Newly added

As my knowledge of Docker has increased, I have also started using Kubernetes for Container Orchestration. To test out Kubernetes manifest files locally I use Minikube. It helps me in making sure all the Kubernetes objects are defined correctly before deploying them in actual clusters in Azure.

General utilities

Homebrew as package manager – Continued from the past

I have been using Homebrew as package manager for installing new software on Mac. For the UI applications I have been using Homebrew Cask. I don’t remember downloading most commonly used software from their website. Using Homebrew is super easy. 

Ironically, Dotnet framework was one of the thing which i had to install due to some problem with managing the dependencies. I have installed almost all the tools listed in this blog using Homebrew and casks.

I have tried doing the same with my Windows laptop with Chocolatey. Once you get used to Homebrew or other package managers, believe me you would not want to go back to UI based installations.

Retina Display Menu (RDM) – Newly added

RDM gives us the option of setting the Mac Retina to higher resolutions. It work not only with the Retina display but also with the secondary monitor that I have.

Skitch – Newly added

I use Skitch to edit images that I post on my blog. It helps with things like adding annotations to the image.

ImageOptim – Newly added

ImageOptim helps to compress the image sizes before posting it on the blog.

Awareness – Newly added

Awareness is a nice little utility which shows you the time since you have not taken a break while working on the PC. Good thing about this utility is that it also has a windows equivalent.

Whatsapp Desktop – Newly added

Whatsapp has become the primary mode of communication. I have whatsapp desktop client for Mac which is helpful when you don’t have to switch from laptop to smartphone.

Telegram Desktop – Newly added

I recently started using Telegram. Just like Whatsapp, having a telegram desktop client is useful to communicate right from the laptop with your contacts.

Ansible – continued from past

Ansible usage improved for past year as I started looking for opportunities to remove manual steps. I like the simplicity of Ansible. It makes automating things a breeze. Recently I managed to deploy a piece of software on a multi-node cluster using Ansible.

Powershell – Newly added

While working on my Voxxed Days and Azure Bootcamp demo, I realized that Ansible could not address my needs for automating parts of deployment for Kubernetes objects. That's when I stumbled upon Powershell. Powershell now works cross platform. I developed small scripts which help me automate the provisioning of Kubernetes cluster in Azure using AKS service, deploy multi-container app to it, teardown the application resources and finally delete the resources from a resource group in Azure.

Azure CLI – Newly added

I have been exploring cloud technologies using Azure quite a lot during last year. I find Azure CLI quite handy while dealing with Azure resources. I even wrote a blog post about how we can learn more about Azure capabilities using the interactive mode in Azure CLI.

Productivity tools

Microsoft OneNote – continued from past

OneNote has been my companion for last couple of years. I create a new OneNote notebook every year. One notebook is for office related work and another one for personal.  I make full use of my IPad Pro to take notes wherever I go be it in office or at community events. I can’t imagine what would happen if I loose the notebooks I have created over the last 2-3 years. All my IP would be lost with them in most likelihood.

MacPass – continued from past

MacPass continues to be my password manager across multiple devices.

Todoist – continued from past

Todoist has helped me better organize myself. I use it to create multiple projects for personal, official and community related activities. It also helps me organize the recurring tasks like bill payments, insurance payments etc.

Dropbox – continued from past

Dropbox continues to be my preferred approach for synching documents across multiple devices.

Adobe Acrobat Reader – continued from past

Adobe Acrobat Reader continues to be my preferred reader for reading ebooks due to its capability to sync across devices via Adobe Cloud.

CheatSheet – continued from past

CheatSheet still continues to be my best friend when I want to learn about keyboard shortcuts in existing and new programs.

Spectacle – continued from past

Spectacle is another utility which I always use on daily basis. I use it to move windows across multiple screens, resize the screens.

TweetDeck – newly added

TweetDeck gives the ability to add multiple columns for Tweets, Mentions, Retweets, Notifications etc.

Battery related utilities

I still use all the battery related utilities listed in last years blog. Among all Battery Monitor is the best I found useful. It gives option to set threshold when the notification should appear. I know immediately when the battery is 100% charged as well as when there is only 5% remaining. This helps me to not overcharge the battery.

Things which got deleted / deprecated

Atom and Sublime text code editors

I did not find any use case to use these two editors during last one year. I should remove them from the Mac Dev Setup ansible playbook which I use to setup the laptop.

VirtualBox & Vagrant

Since Docker now has support for Docker for Mac, I did not find use case for VirtualBox and Vagrant. VirtualBox is still used by Minikube internally. I did not have the need to work with VirtualBox or vagrant directly. I think Vagrant would go away from my Mac soon.

Blogo

Blogo did not have the features I was looking for. Instead of trying to find a blog editor native to Mac, i decided to stick with my preferred Open Live Writer on windows.

f.lux

Initially I was impressed by flux. But then I ended up switching it off more often than not. In the end I decided to remove it altogether.

What I am still looking for

Mac alternative for MobaXterm

On windows, I am used to MobaXterm which allows to store collection of remote systems. I can just double click on one of the node and login to the remote server. I have not found a similar utility for Mac. I also like the multi tabbed interface of Moba.

Conclusion

During the past year, as I shifted from Windows to Mac as my primary development laptop I embraced many of the open source tools. I mainly worked with Docker and Kubernetes during this time. For the C# code, I used VS Code and for Java and Scala I used IntelliJ as my preferred IDE. I have got used to the spotlight feature of Mac to quickly start application and look for documents.

Now a days, my workflow involves using the Spotlight with COMMAND + SPACE keyboard combination. Use Spectacle to move the application to the screen I want to work with mostly using the key combinations COMMAND + OPTION + CONTROL + LEFT ARROW or RIGHT ARROW to move to the screen. And finally use full screen mode using Spectacle COMMAND + OPTION + F.

I am sure there are many other tools and utilities which can make developers life easier while working with Mac. I would love to hear about them. I hope some of these tools and utilities are found useful to the readers.

Until next time, Code With Passion and Strive for Excellence.

Comments

  1. This is very nice. I got to start installing Todoist, retina display menu and spectacle. Thanks for this tips Nilesh.

    ReplyDelete
    Replies
    1. You are not supposed to just takes tools from my toolkit but also suggest what is missing @Ross :)
      Anything I should add?

      Delete

Post a Comment

Popular Posts

Build custom SQL Server 2017 Linux Docker image

BackgroundIn the earlier series of posts on continuous deployment of multi-container apps, I had used two containers for ASP.Net Core MVC web site and ASP.Net Core Web API. This post is a sort of continuation. In the earlier version we were using in memory database to store the data. This approach is useful in a proof of concept or a quick demo application. In an enterprise scenario we would use some sort  of persistent data store to store the data. It is very easy to containerize the stateless services and web front ends. When we move towards stateful processing, things start to get interesting.Containers by their very nature are supposed to be ephemeral. This means that containers can be stopped and destroyed and a new one built and put in place with minimum setup and configuration. If we destroy the container and replace it with a new one what happens to the data stored inside the container? Can we use containers to run database related processes? How can the stateless containers c…

Docker Compose Tip : How to avoid SQL Server 2017 container exiting when running using docker compose

Problem starting SQL 2017 containerWhile working on recent blog post on Integrating SQL Server 2017 Linux with ASP.Net Core using Docker I cam across a strange behavior. I was able to run SQL Server 2017 Linux container image successfully as demonstrated here. I was able to initialize the database using the command docker run -it -p 1433:1433 \ --name sql2017 \ nileshgule/sqldbThis command runs the custom image in interactive mode based on the –i flag. We also pass the t flag to create a psudo tty terminal. The next step for me was to try the integration with Dotnet Core project. I started with updating the docker-compose file and other changes explained in the post on integration.Before I added the sql2017 as the service inside docker-compose file, I ran the SQL Server 2017 container individually using the above command & verified that the Core MVC and Core Web API we able to communicate to the database inside container.This seemed pretty easy at first. All I had to do was update…

Integrate SQL Server 2017 Linux with ASP.NET Core using Docker

In the previous post, we saw how to initialize a SQL Server 2017 on Linux database running inside Docker container. This post is continuation of my exploration about Docker containers for stateful applications. In this post we will explore how to integrate the SQ Server 2017 on Linux container with ASP.Net Core Web API also running inside a Docker container. We will perform following activitiesUpdate Docker compose file to build the SQL server imageUpdate Web API project to use SQL Server Database instead of In memory databaseBuild and run the application containers using Docker compose commandsQuery Data from SQL container using the MVC web front endUpdate Docker compose file to build the SQL server imageDocker provides Docker Compose as a tool for defining and running multi-container Docker applications. I already have an existing docker compose file which I have been using for my series of post on implementing continuous deployment of multi container apps. In a compose file we defi…