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 expect to always be installed on my dev machine.

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.
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.
DiscordChat application for personal dev communities and the React community.
DockerRunning containers.
figAdd-in to terminals to augment and customize its capabilities.
git / GitHub CLICommand-line access to GitHub specific functionality.
Homebrew / CaskEnables installing software from the command line.
iTerm 2Stand-alone terminal supporting different visual styles.
LensK8s IDE for managing K8s clusters.
SnagItCapture screenshots or record your screen. Provides tooling to edit and markup images.
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
Apollo GraphQLRich editor support for GraphQL client and server development that seamlessly integrates with the Apollo platform
Code Spell CheckerSpelling checker for source code
CodeMetricsComputes complexity in TypeScript / JavaScript files.
Dev ContainersOpen any folder or repository inside a Docker container and take advantage of Visual Studio Code's full feature set.
ElixirLS: Elixir support and debuggerElixir support with debugger, autocomplete, and more. Powered by ElixirLS.
ESLintIntegrates ESLint JavaScript into VS Code.
GitHub ActionsGitHub Actions workflows and runs for github.com hosted repositories in VS Code
GitHub CodespacesYour instant dev environment
GitHub CopilotYour AI pair programmer
GitHub Markdown PreviewChanges VS Code's built-in markdown preview to match GitHub
GitHub Pull Requests and IssuesPull Request and Issue Provider for GitHub
GitHub RepositoriesRemotely browse and edit any GitHub repository
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
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
Jest Test ExplorerRun your Jest tests in the Sidebar of Visual Studio Code
JestUse Facebook's Jest With Pleasure.
JS CodeFormer: Javascript Refactoring & Code AutomationA JavaScript/TypeScript refactoring and code automation tool for building better source
Live ShareReal-time collaborative development from the comfort of your favorite tools.
Markdown All in OneAll you need to write Markdown (keyboard shortcuts, table of contents, auto preview and more)
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 Github StylingChanges VS Code's built-in markdown preview to match Github's style
Markdown Preview Mermaid SupportAdds Mermaid diagram and flowchart support to VS Code's builtin markdown preview
Markdown yaml PreambleRenders yaml front matter as a table in the built-in markdown preview
MDXLanguage support for MDX
Mermaid Markdown Syntax HighlightingMarkdown syntax support for the Mermaid charting language
nullnull
Prettier - Code formatterCode formatter using prettier
PrismaAdds syntax highlighting, formatting, auto-completion, jump-to-definition and linting for .prisma files.
Remote - SSH: Editing Configuration FilesEdit SSH configuration files
Remote ExplorerView remote machines for SSH and Tunnels.
Remote RepositoriesRemotely browse and edit git repositories
REST ClientREST Client for Visual Studio Code
shell-formatA formatter for shell scripts, Dockerfile, gitignore, dotenv, /etc/hosts, jvmoptions, and other file types
Stream Deck for Visual Studio CodeEnables Stream Deck integration with Visual Studio Code.
Test Adapter ConverterConverter extension from the Test Adapter UI to native VS Code testing
Test Explorer Live ShareUse the Test Explorer in your Visual Studio Live Share sessions
Test Explorer UIRun your tests in the Sidebar of Visual Studio Code
Version LensShows the latest version for each package using code lens
ZipFS - a zip file systemAllows to easily inspect and modify files stored within zip archives.
code --install-extension 1Password.op-vscode
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 bpruitt-goddard.mermaid-markdown-syntax-highlighting
code --install-extension cmstead.js-codeformer
code --install-extension dbaeumer.vscode-eslint
code --install-extension dracula-theme-pro.theme-dracula-pro
code --install-extension eamodio.gitlens
code --install-extension esbenp.prettier-vscode
code --install-extension foxundermoon.shell-format
code --install-extension GitHub.codespaces
code --install-extension GitHub.copilot
code --install-extension GitHub.remotehub
code --install-extension github.vscode-github-actions
code --install-extension GitHub.vscode-pull-request-github
code --install-extension GraphQL.vscode-graphql
code --install-extension GraphQL.vscode-graphql-syntax
code --install-extension hbenl.vscode-test-explorer
code --install-extension hbenl.vscode-test-explorer-liveshare
code --install-extension humao.rest-client
code --install-extension JakeBecker.elixir-ls
code --install-extension kavod-io.vscode-jest-test-adapter
code --install-extension kisstkondoros.vscode-codemetrics
code --install-extension ms-vscode-remote.remote-containers
code --install-extension ms-vscode-remote.remote-ssh-edit
code --install-extension ms-vscode.azure-repos
code --install-extension ms-vscode.remote-explorer
code --install-extension ms-vscode.remote-repositories
code --install-extension ms-vscode.test-adapter-converter
code --install-extension ms-vsliveshare.vsliveshare
code --install-extension nicollasr.vscode-streamdeck
code --install-extension Orta.vscode-jest
code --install-extension pflannery.vscode-versionlens
code --install-extension Prisma.prisma
code --install-extension streetsidesoftware.code-spell-checker
code --install-extension unifiedjs.vscode-mdx
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"