Applications I Use For Python Development
Tags: webdev, python, beginners, devops
Published: 2022-09-03 20:30:28

- [Introduction](#introduction)
- [Python Tools](#python-tools)
  - [MiniConda and Conda](#miniconda-and-conda)
  - [Pip](#pip)
- [Command Line Tools](#command-line-tools)
  - [Homebrew](#homebrew)
  - [iTerm2](#iterm2)
- [Code Editors](#code-editors)
  - [VS Code](#vs-code)
  - [Thonny](#thonny)
- [Web Browsers](#web-browsers)
  - [FireFox](#firefox)
  - [Chrome](#chrome)
- [Data Visualisation](#data-visualisation)
  - [Tableau Public](#tableau-public)
- [SQL Databases](#sql-databases)
  - [SQLite and DB Browser for SQLite](#sqlite-and-db-browser-for-sqlite)
  - [PostgreSQL and pgAdmin 4](#postgresql-and-pgadmin-4)
  - [DBeaver](#dbeaver)
- [API Usage and Testing](#api-usage-and-testing)
  - [Postman](#postman)
- [Notes and Graphics](#notes-and-graphics)
  - [Apple Notes](#apple-notes)
  - [diagrams.net (Draw.io)](#diagramsnet-drawio)
  - [Pixelmator Pro](#pixelmator-pro)
- [Hardware Development](#hardware-development)
  - [Raspberry Pi](#raspberry-pi)
- [Final Words](#final-words)

## Introduction

Over the past eight to ten months, I have been learning about programming, specifically with Python, mostly as a hobby but that could be something that I may decide to make into a career, mostly in data analysis but that isn't the point of this article.

Instead, what I thought might be useful, mostly for those that are new to Python programming, is to share some of the tools I have been using or found useful for Python development during this time.

To preface this, I use an Intel-based Mac but most (not all) of these tools are available for Linux and Windows.

## Python Tools

### MiniConda and Conda

Having recently started delving into the world of data analytics, I have been using MiniConda to manage the packages that are typically used in data analytics. The packages I commonly use include:

- Jupyter Notebooks
- Matplotlib
- NumPy
- Pandas
- SciKit-Learn

It isn't an extensive list as there are many more to chose from if you need them.

I use this over Anaconda as I don't need everything that is in Anaconda.

### Pip

The main package manager for Python. I use this for installing packages that are not part of MiniConda or when I'm not doing something data analysis related, such as creating an API with FastAPI.

## Command Line Tools

### Homebrew

As macOS doesn't have a built-in software package manager, I use Homebrew to install additional software, such as command line tools, all the way up to desktop applications such as VS Code. An alternative to Homebrew is MacPorts but I haven't used it to date.

### iTerm2

I use iTerm2 as an alternative to the native macOS Terminal app. I have been using iTerm2 for years and I find its customisability to be very good.

## Code Editors

### VS Code

VS Code is my main code editor at the moment. It has a very customisable user interface and a vast array of extensions for many languages and utilities, such as Databases, Docker and Kubernetes.

I am always open to alternative solutions as I do have my gripes with VS Code, such as GitHub syncing issues from time-to-time but it is the best at the moment, at least for my use cases.

### Thonny

Thonny is an IDE for Python. Whilst I don't use it as my main editor, I have found it useful to perform step-by-step runs of scripts when I need to either diagnose where something is going wrong or understand how a piece of code works.

VS Code has a built-in stepping tool but I don't particularly like it.

## Web Browsers

### FireFox

Presently, FireFox is my main browser and has been for a many number of years. I like to use it over Chrome or Safari as it has a good array of tools for web development, plugins for nearly anything I want to do and has a good stance on privacy.

### Chrome

Whilst I use FireFox as my main browser, I do have Chrome installed to test out the basic web pages I create. Other than that, I don't use it.

## Data Visualisation

### Tableau Public

Tableau is an application I have only just recently installed and started to use. It is used to create dashboards with charts and more from data sources that you need to visualise in a more meaningful way than just a spreadsheet.

It is early days for me with Tableau but it is looking promising.

An alternative to this would be PowerBI from Microsoft.

## SQL Databases

### SQLite and DB Browser for SQLite

When I'm creating a project that uses SQLite for the database, I manage it using DB Browser for SQLite.

I don't use SQLite all that often but this will handle pretty much all the management functions I need.

### PostgreSQL and pgAdmin 4

Most of the application I create that need a database, I use PostgreSQL. I mostly use PostgreSQL due to its stability, performance and vast array of documentation, be that official documentation or blogs. As a bonus, it runs on a Raspberry Pi as well!

To manage PostgreSQL, I use pgAdmin 4. It is a free tool that manages PostgreSQL databases and servers really well. It is available on Linux, macOS and Windows.

The only thing I do dislike about pgAdmin4 is that it doesn't have a built-in way to update it to the latest version. It will notify you that there is a new version available but you will have to go to the pgAdmin website, download it and install it over the version you have installed. A minor gripe but it is a feature I would like to see added.

### DBeaver

I recently started looking at DBeaver as a replacement for both pgAdmin and DB Browser. It offers more support for a variety of database servers which would mean I only need one tool, which would be nice.

I only started using it so I can't say if it will be what I would use going forward but it has potential.

## API Usage and Testing

### Postman

Postman is pretty much the go to tool for using and testing API's. It is a very powerful tool that has a wealth of features, ranging from creating environments for a specific API, all the way to being able to perform programmatic functions in response to an API request.

The only gripe I would have is that the user interface can feel a little claustrophobic when you start to use it but once you have gotten used to it, it isn't that bad.

## Notes and Graphics

### Apple Notes

Call me simple, but when it comes to taking notes, I prefer to use a basic note taking application or just a paper-based notebook and pen. I have never had that much of an interest in using note taking applications that have subscription fees attached to them.

Prior to using Apple notes, I would just open up a notepad application or an an email and save it as a draft with the subject being a summary of what the notes are. Nice and simple.

### diagrams.net (Draw.io)

The artist formally known as Draw.io is a tool I have used for many years. It offers the ability to create many different types of diagrams, ranging from ERD's to infrastructure and application diagrams. It has a vast collection of symbols and graphics that you can use.

### Pixelmator Pro

Pixelmator Pro is an alternative to PhotoShop (not completely but meets my needs) that (currently) doesn't have a subscription based pricing model. For the amount of image editing I do, it does the job well enough.

## Hardware Development

### Raspberry Pi

I don't think this needs much of an introduction. I use a number of Raspberry Pi's to perform a number of roles. For example, I have a Raspberry Pi that acts as a server for both PostgreSQL (Database) and Exim 4 (email) for development and another Raspberry Pi for testing out sensors and other gadgets that I need to get data from for projects.

## Final Words

Although this is a lot of tools, it doesn't include tools like plugins for VS Code or packages / libraries for Python. If that is something you would like to see, please let me know in the comments.

Also, if you have any recommendations for tools for Python development and data analysis, again, please let me know in the comments. I'm always interested in tools that could make thing easier or better.

Thank you for reading and have a nice day!