My Work Environment: Tools and Customizations
In this post, I want to share with you the tools and customizations that make up my daily work environment. As an Azure consultant and developer, having a well-organized and efficient setup is crucial. Here are some of the tools and customizations I use to streamline my workflow and boost productivity.
Winget: The Ultimate Package Manager
Winget is my go-to package manager for Windows. It simplifies the process of installing, updating, and managing software packages. One of the best features of Winget is its customization options. By running the command winget settings
, you can open the settings file and tweak it to fit your preferences. Here is my customized settings.json
file:
{
"$schema": "https://aka.ms/winget-settings.schema.json",
"visual": {
"progressBar": "rainbow"
},
"source": {
"autoUpdateIntervalInMinutes": 3
},
"uninstallBehavior": {
"purgePortablePackage": true
},
"logging": {
"level": "error"
},
"experimentalFeatures": {
"configureSelfElevate": true,
"configureExport": true,
"configuration03": true,
"directMSI": true
}
}
Enabling autocomplete in Winget also enhances my productivity by reducing the amount of typing required for package commands.
Pomodoro Logger: Tracking Projects and Tasks
To stay on top of my projects and tasks, I use Pomodoro Logger. This tool helps me break down my work into manageable intervals, ensuring that I stay focused and productive throughout the day. By tracking my time spent on various tasks, I can analyze my work patterns and make improvements where necessary.
Azure CLI
Working with Azure requires a lot of command-line interaction, and Azure CLI is my tool of choice. It allows me to manage my Azure resources efficiently and automate various tasks.
Oh My Posh: PowerShell Customization
Oh My Posh is a fantastic tool for customizing my PowerShell prompt. By following Jon D. Jones’s guide, I have configured a visually appealing and informative prompt that enhances my command-line experience. Jon’s detailed walkthrough provided a great foundation for my setup.
Autocomplete in PowerShell
One of the best features of my setup is the autocomplete functionality in PowerShell. By customizing my $PROFILE
, I’ve enabled autocompletion for various commands, including PowerShell, Winget, and Azure CLI. Here’s my $PROFILE
setup:
oh-my-posh --init --shell pwsh --config C:/Users/User/Dropbox/Computer/AppData/powershell.json | Invoke-Expression
if ($host.Name -eq 'ConsoleHost' -or $host.Name -eq 'Visual Studio Code Host' ) {
Import-Module PSReadline
Set-PSReadLineOption -EditMode Windows
Set-PSReadLineOption -PredictionSource History
Set-PSReadlineOption -Color @{
"Command" = [ConsoleColor]::Green
"Parameter" = [ConsoleColor]::Gray
"Operator" = [ConsoleColor]::Magenta
"Variable" = [ConsoleColor]::Yellow
"String" = [ConsoleColor]::Yellow
"Number" = [ConsoleColor]::Yellow
"Type" = [ConsoleColor]::Cyan
"Comment" = [ConsoleColor]::DarkCyan
"InlinePrediction" = '#70A99F'
}
Set-PSReadLineKeyHandler -Function AcceptSuggestion -Key 'Ctrl+Spacebar'
Set-PSReadLineKeyHandler -Key UpArrow -Function HistorySearchBackward
Set-PSReadLineKeyHandler -Key DownArrow -Function HistorySearchForward
Set-PSReadLineKeyHandler -Key Ctrl+Shift+b `
-BriefDescription BuildCurrentDirectory `
-LongDescription "Build the current directory" `
-ScriptBlock {
[Microsoft.PowerShell.PSConsoleReadLine]::RevertLine()
[Microsoft.PowerShell.PSConsoleReadLine]::Insert("dotnet build")
[Microsoft.PowerShell.PSConsoleReadLine]::AcceptLine()
}
}
Import-Module -Name Terminal-Icons
Register-ArgumentCompleter -Native -CommandName az -ScriptBlock {
param($commandName, $wordToComplete, $cursorPosition)
$completion_file = New-TemporaryFile
$env:ARGCOMPLETE_USE_TEMPFILES = 1
$env:_ARGCOMPLETE_STDOUT_FILENAME = $completion_file
$env:COMP_LINE = $wordToComplete
$env:COMP_POINT = $cursorPosition
$env:_ARGCOMPLETE = 1
$env:_ARGCOMPLETE_SUPPRESS_SPACE = 0
$env:_ARGCOMPLETE_IFS = "`n"
$env:_ARGCOMPLETE_SHELL = 'powershell'
az 2>&1 | Out-Null
Get-Content $completion_file | Sort-Object | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, "ParameterValue", $_)
}
Remove-Item $completion_file, Env:\_ARGCOMPLETE_STDOUT_FILENAME, Env:\ARGCOMPLETE_USE_TEMPFILES, Env:\COMP_LINE, Env:\COMP_POINT, Env:\_ARGCOMPLETE, Env:\_ARGCOMPLETE_SUPPRESS_SPACE, Env:\_ARGCOMPLETE_IFS, Env:\_ARGCOMPLETE_SHELL
}
Register-ArgumentCompleter -Native -CommandName winget -ScriptBlock {
param($wordToComplete, $commandAst, $cursorPosition)
[Console]::InputEncoding = [Console]::OutputEncoding = $OutputEncoding = [System.Text.Utf8Encoding]::new()
$Local:word = $wordToComplete.Replace('"', '""')
$Local:ast = $commandAst.ToString().Replace('"', '""')
winget complete --word="$Local:word" --commandline "$Local:ast" --position $cursorPosition | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)
}
}
Set-PSReadlineKeyHandler -Key Tab -Function MenuComplete
Terraform CLI
Terraform is a critical tool for managing infrastructure as code. It allows me to define and provision resources in Azure using a high-level configuration language. This approach ensures that my infrastructure is version-controlled and reproducible, making it easier to manage and scale.
KeePass: Secure Password Management
Managing passwords securely is a top priority, and for that, I rely on KeePass. It stores all my passwords in an encrypted database, allowing me to access them easily while keeping them secure. KeePass also supports generating strong passwords, which is essential for maintaining good security practices.
DeepL: Translation Made Easy
For translation tasks, I rely on DeepL. It’s a powerful translation tool that delivers accurate and contextually appropriate translations. Whether I’m working on documentation or communicating with international clients, DeepL ensures that language is never a barrier.
Spotify: The Perfect Work Companion
Last but not least, Spotify is my constant companion while working. With its vast library of music and podcasts, it helps me stay focused and motivated throughout the day. Whether I need some background music or a podcast to keep me engaged, Spotify has it all.
ChatGPT: AI Assistant
Another essential tool I use daily is ChatGPT. As an AI assistant, ChatGPT helps me quickly find answers, generate ideas, and even write scripts or code snippets when needed. It speeds up the research process, provides alternative solutions to problems, and assists in breaking down complex topics.
Conclusion
This is just a small list of tools which I use day by day, I will be modifying it by adding tools or customizations to them. In case you have tools that you want to share with the community, please don’t hesitate to comment!
Comments