James Andrew Smith

Senior Software Engineer
Profile of Andrew Smith

My Developer Workbench

Overview

Today I'd like to share some of my developer workbench and the software I regularly use. I have broken them into a few categories:

Essential Software

Software I regulary use.

Implementation Software

Non-essential software that may be on my local development machine or installed in a dev container.

VS Code Extensions

Extensions I use in VS Code.

Remember, my primary development machine is running OSX.

Essential Software

SoftwareDescription
1PasswordPassword manager. Also setup to manage SSH keys.
Alfred and PowerPackOpen apps, perform actions, and other workflows with hotkeys.
asdfManage multiple versions of installed languages; such as Node.js, python, go, etc.
BackblazeContinuous backups with unlimited storage.
bashPreferred shell.
BetterTouchToolCustomize aspects of your mac's trackpad, touch-bar, snap areas, and more.
Cross Share with Alfred workflowAirdrop via Alfred
DiscordChat application for personal dev communities and the React community.
DockerRunning containers/devcontainers locally.
git / GitHub CLICommand-line access to GitHub specific functionality.
HazelAutomated file organization.
Homebrew / CaskEnables installing software from the command line.
iTerm 2Stand-alone terminal supporting different visual styles.
Karabiner ElementsKeyboard customizer.
LensK8s IDE for managing K8s clusters.
SnagItCapture screenshots or record your screen. Provides tooling to edit and markup images.
TailscaleSecurely access your network from anywhere.
VS CodePrimary editor.

Implementation Software

SoftwareDescription
Altair GraphQL ClientPostman-like client for GraphQL requests.
ansibleTool to help audomate IT and infrastructure.
jqBash tool for parsing and manipulating JSON.
jsonnetBash tool for generating JSON from a template.
kubectlKubernetes management
ProxmoxBare-metal hypervisor I use at home to manage and virtualize environments/machines.
terraformAutomate the provision of virtual machines on a variety of platforms/hypervisors.
yqBash tool for parsing and manipulating YAML.

VS Code Extensions

I created a simple bash script to pull these extensions from my VS Code installation. You can find it at the bottom of this page.

Assumes you have jq installed from the above list.

Extension NameDescription
1PasswordSay goodbye to plaintext secrets in your code
Elixir Test ExplorerRun Elixir tests in the Sidebar of Visual Studio Code
BookmarksMark lines and jump to them
Jest SnippetsJest snippets
Apollo WorkbenchTooling to help you develop and mock federated schemas using Apollo Federation
Apollo GraphQLRich editor support for GraphQL client and server development that seamlessly integrates with the Apollo platform
ZipFS - a zip file systemAllows to easily inspect and modify files stored within zip archives.
GitHub Markdown PreviewChanges VS Code's built-in markdown preview to match GitHub
Markdown CheckboxesAdds checkbox support to the built-in markdown preview
Markdown EmojiAdds emoji syntax support to VS Code's built-in markdown preview and markdown cells in notebook
Markdown FootnotesAdds [^footnote] syntax support to VS Code's built-in markdown preview
Markdown Preview Mermaid SupportAdds Mermaid diagram and flowchart support to VS Code's builtin markdown preview
Markdown Preview Github StylingChanges VS Code's built-in markdown preview to match Github's style
Markdown yaml PreambleRenders yaml front matter as a table in the built-in markdown preview
exports autocompleteautocompletes javascript module exports from your project
JS CodeFormer: Javascript Refactoring & Code AutomationA JavaScript/TypeScript refactoring and code automation tool for building better source
JS Refactor :: JS CodeFormerAutomated refactoring tools to smooth your development workflow
Jsonnet LSPJsonnet IDE Support. Autocomplete, lint, format, goto def, signature help.
markdownlintMarkdown linting and style checking for Visual Studio Code
ESLintIntegrates ESLint JavaScript into VS Code.
EJS language support2019 - EJS language support for Visual Studio Code.
nullnull
eslint-disable-snippetsSimple snippets to disable eslint rules
GitLens — Git superchargedSupercharge Git within VS Code — Visualize code authorship at a glance via Git blame annotations and CodeLens, seamlessly navigate and explore Git repositories, gain valuable insights via rich visualizations and powerful comparison commands, and so much more
EditorConfig for VS CodeEditorConfig Support for Visual Studio Code
Prettier - Code formatterCode formatter using prettier
shell-formatA formatter for shell scripts, Dockerfile, gitignore, dotenv, /etc/hosts, jvmoptions, and other file types
HCL Formatformat HCL (HashiCorp Configuration Language)
GitHub CodespacesYour instant dev environment
GitHub CopilotYour AI pair programmer
GitHub Copilot ChatAI chat features powered by Copilot
GitHub RepositoriesRemotely browse and edit any GitHub repository
GitHub ActionsGitHub Actions workflows and runs for github.com hosted repositories in VS Code
GitHub Pull RequestsPull Request and Issue Provider for GitHub
Jsonnet Language ServerFull code support (formatting, highlighting, navigation, debugging etc) for Jsonnet
Excel ViewerEdit Excel spreadsheets and CSV files in Visual Studio Code and VS Code for the Web.
GraphQL: Language Feature SupportGraphQL LSP extension that adds autocompletion, validation, go to definition, hover, outline and more.
GraphQL: Syntax HighlightingAdds syntax highlighting support for .graphql & embedded support for javascript, typescript, vue, markdown, python, php, reason, ocaml and rescript
HashiCorp TerraformSyntax highlighting and autocompletion for Terraform
Test Explorer UIRun your tests in the Sidebar of Visual Studio Code
Test Explorer Live ShareUse the Test Explorer in your Visual Studio Live Share sessions
REST ClientREST Client for Visual Studio Code
FluxFlux language extension for VSCode
ElixirLS: Elixir support and debuggerElixir support with debugger, autocomplete, and more - Powered by ElixirLS.
vscode-styled-sortOpinionated rule sorting for styled-components.
Presentation ModeShow your code properly in a presentation
Jest Test ExplorerRun your Jest tests in the Sidebar of Visual Studio Code
Home Assistant Config HelperCompletion for entity-id's in Home Assistant Configurations
SSH FSFile system, terminal and task provider using SSH
CodeMetricsComputes complexity in TypeScript / JavaScript files.
DotENVSupport for dotenv file syntax
File DownloaderExposes an API that allows other extensions to download files.
Azure PipelinesSyntax highlighting, IntelliSense, and more for Azure Pipelines YAML
DockerMakes it easy to create, manage, and debug containerized applications.
C# Dev KitOfficial C# extension from Microsoft
C#Base language support for C#
.NET Install ToolThis extension installs and manages different versions of the .NET SDK and Runtime.
IntelliCode for C# Dev KitAI-assisted development for C# Dev Kit
Microsoft Edge Tools for VS CodeUse the Microsoft Edge Tools from within VS Code to see your site's runtime HTML structure, alter its layout, fix styling issues as well as see your site's network requests.
autopep8Formatting support for Python files using the autopep8 formatter.
Python DebuggerPython Debugger extension using debugpy.
PythonPython language support with extension access points for IntelliSense (Pylance), Debugging (Python Debugger), linting, formatting, refactoring, unit tests, and more.
PylanceA performant, feature-rich language server for Python in VS Code
Dev ContainersOpen any folder or repository inside a Docker container and take advantage of Visual Studio Code's full feature set.
Remote - SSHOpen any folder on a remote machine using SSH and take advantage of VS Code's full feature set.
Remote - SSH: Editing Configuration FilesEdit SSH configuration files
WSLOpen any folder in the Windows Subsystem for Linux (WSL) and take advantage of Visual Studio Code's full feature set.
Remote DevelopmentAn extension pack that lets you open any folder in a container, on a remote machine, or in WSL and take advantage of VS Code's full feature set.
Azure AccountA common Sign In and Subscription management extension for VS Code.
Live PreviewHosts a local server in your workspace for you to preview your webpages on.
PowerShellDevelop PowerShell modules, commands and scripts in Visual Studio Code!
Remote ExplorerView remote machines for SSH and Tunnels.
Remote RepositoriesRemotely browse and edit git repositories
Remote - TunnelsConnect to a remote machine through a Tunnel
Test Adapter ConverterConverter extension from the Test Adapter UI to native VS Code testing
Live ShareReal-time collaborative development from the comfort of your favorite tools.
Nx ConsoleThe UI for Nx & Lerna
JestUse Facebook's Jest With Pleasure.
CSS-in-JSCSS-in-JS autocomplete and conversion
Version LensShows the latest version for each package using code lens
Polacode📸 Polaroid for your code
PrismaAdds syntax highlighting, formatting, auto-completion, jump-to-definition and linting for .prisma files.
AnsibleAnsible language support
XMLXML Language Support by Red Hat
YAMLYAML Language Support by Red Hat, with built-in Kubernetes syntax support
Better JinjaSyntax highlighting for jinja(2) including HTML, Markdown, YAML, Ruby and LaTeX templates
JavaScript BoosterBoost your productivity with advanced JavaScript/TypeScript refactorings and commands
Trx viewerAllows visualizing .trx files.
Auto ImportAutomatically finds, parses and provides code actions and code completion for all available imports. Works with Typescript and TSX
Code Spell CheckerSpelling checker for source code
vscode-styled-componentsSyntax highlighting for styled-components
Even Better TOMLFully-featured TOML support
D2Support for .d2 files.
MDXLanguage support for MDX
CodeTourVS Code extension that allows you to record and playback guided tours of codebases, directly within the editor
Import CostDisplay import/require package size in the editor
MDX PreviewMDX Preview
Markdown All in OneAll you need to write Markdown (keyboard shortcuts, table of contents, auto preview and more)
code --install-extension 1password.op-vscode
code --install-extension adamzapasnik.elixir-test-explorer
code --install-extension alefragnani.bookmarks
code --install-extension andrew-codes.jest-snippets
code --install-extension apollographql.apollo-workbench
code --install-extension apollographql.vscode-apollo
code --install-extension arcanis.vscode-zipfs
code --install-extension bierner.github-markdown-preview
code --install-extension bierner.markdown-checkbox
code --install-extension bierner.markdown-emoji
code --install-extension bierner.markdown-footnotes
code --install-extension bierner.markdown-mermaid
code --install-extension bierner.markdown-preview-github-styles
code --install-extension bierner.markdown-yaml-preamble
code --install-extension capaj.vscode-exports-autocomplete
code --install-extension cmstead.js-codeformer
code --install-extension cmstead.jsrefactor
code --install-extension cverge.jsonnet-lsp
code --install-extension davidanson.vscode-markdownlint
code --install-extension dbaeumer.vscode-eslint
code --install-extension digitalbrainstem.javascript-ejs-support
code --install-extension dracula-theme-pro.theme-dracula-pro
code --install-extension drknoxy.eslint-disable-snippets
code --install-extension eamodio.gitlens
code --install-extension editorconfig.editorconfig
code --install-extension esbenp.prettier-vscode
code --install-extension foxundermoon.shell-format
code --install-extension fredwangwang.vscode-hcl-format
code --install-extension github.codespaces
code --install-extension github.copilot
code --install-extension github.copilot-chat
code --install-extension github.remotehub
code --install-extension github.vscode-github-actions
code --install-extension github.vscode-pull-request-github
code --install-extension grafana.vscode-jsonnet
code --install-extension grapecity.gc-excelviewer
code --install-extension graphql.vscode-graphql
code --install-extension graphql.vscode-graphql-syntax
code --install-extension hashicorp.terraform
code --install-extension hbenl.vscode-test-explorer
code --install-extension hbenl.vscode-test-explorer-liveshare
code --install-extension humao.rest-client
code --install-extension influxdata.flux
code --install-extension jakebecker.elixir-ls
code --install-extension johnuphoff.vscode-styled-sort
code --install-extension jspolancor.presentationmode
code --install-extension kavod-io.vscode-jest-test-adapter
code --install-extension keesschollaart.vscode-home-assistant
code --install-extension kelvin.vscode-sshfs
code --install-extension kisstkondoros.vscode-codemetrics
code --install-extension mikestead.dotenv
code --install-extension mindaro-dev.file-downloader
code --install-extension ms-azure-devops.azure-pipelines
code --install-extension ms-azuretools.vscode-docker
code --install-extension ms-dotnettools.csdevkit
code --install-extension ms-dotnettools.csharp
code --install-extension ms-dotnettools.vscode-dotnet-runtime
code --install-extension ms-dotnettools.vscodeintellicode-csharp
code --install-extension ms-edgedevtools.vscode-edge-devtools
code --install-extension ms-python.autopep8
code --install-extension ms-python.debugpy
code --install-extension ms-python.python
code --install-extension ms-python.vscode-pylance
code --install-extension ms-vscode-remote.remote-containers
code --install-extension ms-vscode-remote.remote-ssh
code --install-extension ms-vscode-remote.remote-ssh-edit
code --install-extension ms-vscode-remote.remote-wsl
code --install-extension ms-vscode-remote.vscode-remote-extensionpack
code --install-extension ms-vscode.azure-account
code --install-extension ms-vscode.live-server
code --install-extension ms-vscode.powershell
code --install-extension ms-vscode.remote-explorer
code --install-extension ms-vscode.remote-repositories
code --install-extension ms-vscode.remote-server
code --install-extension ms-vscode.test-adapter-converter
code --install-extension ms-vsliveshare.vsliveshare
code --install-extension nrwl.angular-console
code --install-extension orta.vscode-jest
code --install-extension paulmolluzzo.convert-css-in-js
code --install-extension pflannery.vscode-versionlens
code --install-extension pnp.polacode
code --install-extension prisma.prisma
code --install-extension redhat.ansible
code --install-extension redhat.vscode-xml
code --install-extension redhat.vscode-yaml
code --install-extension samuelcolvin.jinjahtml
code --install-extension sburg.vscode-javascript-booster
code --install-extension scabana.trxviewer
code --install-extension steoates.autoimport
code --install-extension streetsidesoftware.code-spell-checker
code --install-extension styled-components.vscode-styled-components
code --install-extension tamasfe.even-better-toml
code --install-extension terrastruct.d2
code --install-extension unifiedjs.vscode-mdx
code --install-extension vsls-contrib.codetour
code --install-extension wix.vscode-import-cost
code --install-extension xyc.vscode-mdx-preview
code --install-extension yzhang.markdown-all-in-one

Bash Script

#! /bin/bash

markdown_list_output="|Extension Name | Description |
|:--|:--|"
markdown_install_output="\`\`\`bash"
readarray -t extensions <<<$(code --list-extensions)
for val in "${extensions[@]}"; do
    extension_data=$(
        curl \
            -s \
            --data "{\"assetTypes\":null,\"filters\":[{\"criteria\":[{\"filterType\":7,\"value\":\"$val\"}],\"direction\":2,\"pageSize\":100,\"pageNumber\":1,\"sortBy\":0,\"sortOrder\":0,\"pagingToken\":null}],\"flags\":2151}" \
            --header "accept: application/json;api-version=3.0-preview.1" \
            --header "content-type: application/json" \
            https://marketplace.visualstudio.com/_apis/public/gallery/extensionquery
    )

    extensionName="$(echo "$extension_data" | jq '.results[0].extensions[0].extensionName')"
    if [ extensionName == 'null' ]; then
        continue
    fi
    markdown_list_output="$markdown_list_output
$(
        echo "$extension_data" |
            jq '"|[\(.results[0].extensions[0].displayName)](https://marketplace.visualstudio.com/items?itemName=\(.results[0].extensions[0].publisher.publisherName).\(.results[0].extensions[0].extensionName)) | \(.results[0].extensions[0].shortDescription) |"' |
            sed 's/\"//g'
    )"

    markdown_install_output="$markdown_install_output
code --install-extension $val"
done
markdown_install_output="$markdown_install_output
\`\`\`"

echo "$markdown_list_output

$markdown_install_output"