List of article summaries
Consistent modern shell tooling on MacOS and Windows WSL for developers
I regularly code on both MacOS and Windows machines and I was always annoyed how different the default experiences are on each. I need to use the same tools and the same experience on both.
Windows “WSL” (Windows Subsystem for Linux) is a great tool for this you can use on Windows 10 and newer. The latest version lets you run a full Ubuntu instance that integrates seamlessly with the underlying windows instance.
By using WSL2 you can have a (mostly) identical developer experience jumping between MacOS and Windows.
Better tooling for Developers
Many of the terminal tools that come with unix environments are functionally similar to how they were 20 years ago. But other developer tooling has advanced quite a bit since then.
You can replace tools like
cat with modern equivalents that support full colour, unicode icons, git state and more. Terminal prompts can be made git aware and use colour to indicate state so you don’t have to query git so often.
Keeping developer experience consistent across machines
Keeping any shell changes you make on one machine up to date on all the machines you code on is a nightmare without the right tooling.
This article also explains all the tools I use and how I keep the same terminal setup consistent on MacOS and Windows!
How engineers can help deliver software effectively
Delivery managers and team leads have the responsibility to deliver a software system via an engineering team.
Your customer wants every feature to work perfectly and they want it delivered yesterday. Your team wants to learn and grow.
It’s a tough role managing all the stakeholders and creators in a project.
Engineers can help drive great delivery by empathising with and supporting the delivery manager or leads in a project team.
How to identify a great tech organisation before you join
No one wants to waste time working for an organisation that’s a bad fit. But how do you know a good place from a bad place until you actually work there?
It’s important to spend the same amount of time analysing a potential organisation as they spend analysing you!
During an interview process an organisation has personality testing, resumes, tech testing, behavioural testing, reference checks, bank checks, police checks and more.
If it sounds like a very one-sided process that’s because it is! But there are ways you can bring more balance and here are some important things to research before accepting any engineering job offer.
Set vscode as the default for text files on mac
How to set the default text editor to be visual studio code on the mac
Update 29 Jan 2022 - I added this and more to comprehensive instructions for configuring a modern developer shell and MAcOS in another article here. You should check that out.
Convert a Microsoft Word document to markdown
How to convert a Microsoft Word document like
.docx to markdown.
3 markdown editing tips I wish I knew when I started blogging
I write markdown documentation everyday. I use it for documentation at work and I use it for my blog. I love the simplicity of it.
Over the years I’ve learned theses tips and I wish I knew them when I started.
8 ESlint plugins for your NodeJs app
Using Eslint in your project is an easy way to improve productivity and reduce low-value, subjective code-style comments from pull requests. It will make your code consistent and easy for the next developer to read and we should always be optimising for readability.
Here I’ll explain why it’s so important to use ESLint in your application and I’ll describe the plugins I always add to every new NodeJs application to massively improve code quality and consistency.
Configuring different work and personal github accounts on your local repositories with ssh authentication
If you have multiple GitHub accounts like personal and work then it’s important to use the correct account for each repository so you don’t accidentally commit to one with the wrong GitHub account!.
Each git client has built in ways to do this with http authentication but http authentication tends to only be set with the specific git client and applies to all repositories you have in the specific application.
Using http authentication also often means that a different user will be used in shell git compared to your GUI client.
If you want to use the same connection authentication for a git repository from any git client like shell, source tree or the GitHub client then it’s worth setting up ssh for the GitHub account(s) and configuring the repositories to use it.
Use regex replace in vscode find
I needed to replace text that was a bit specific and to use vscode’s regex replace but had to figure out the syntax. Just making a note here for myself so it’s easy to lookup again!
How to use Git rebase on your personal project
I had to change some of my Git history because I had used the wrong Github user to push some changes to personal projects. I just needed to change the user that committed the code without changing any of the other history. I don’t use rebase very often so here are my notes on this.
How to list files changed in current branch (and run prettier on them)
I needed to run prettier on only the files changed in one branch of my git repo. This solution is a bit hacky but it did the trick!
How to save an exit code to a variable in bash script
I had to save the exit code from one part of the script that runs a suite of tests, then run some cleanup and finally return the exit code received previously from the tests.
I haven’t used bash scripts too often in my work so when I had to do this recently I had to spend some time looking up syntax.
This will fail the tests correctly in our Azure Devops pipeline while still cleaning up the docker containers.
Creating a guid in mac OSX command line
Note for myself on how to create guid or uuid on the command line in mac osx.
Converts to lowercase.
Adding Visual Studio Code debugging to Node.js JS projects
I find it useful to be able to debug my Node.js application in vscode. It saves you having to write
console.log statements to figure out why something isn’t working. I sometimes use the debugger to check my tests too. This is the configuration I use to setup debugging for the main application and the tests.
Password protect zip file on mac OSX command line
Short reminder for myself on how to password protect a zip file on Mac OSX command line.
Using Gource to visualize activity on a git repository
At the end of a project or when a person is leaving a team or project, it’s nice to show the impact that they had on the software visually. Git has some built in statistics that will show you tables listing additions and deletions, commit counts and that kind of thing. But you can use gource to create a cool time series visualisation showing the changes over time.
It’s well worth checking out this tool.
Notes on testing some notebooks - Rhodia, Leuchtturm and Moleskein
I’ve always preferred using a real notebook for jotting stuff down while working at a computer.
I started out using no-name notebooks but I’ve slowly moved to using better quality notebooks.
Here are my notes on some popular decent notebooks!
How I enhance pull request quality on GitHub and Azure DevOps
Code reviews and PRs are deservedly known as a fantastic way to improve code and product quality.
I find that having a checklist is super handy for remembering all the checks to perform and the context to give a reviewer.
How to send a slack webhook message for an Azure DevOps pipeline task
I wanted to send a slack message when a deployment completed on Azure. It’s fairly straightforward but there are a couple of things I had to pull together from documentation on slack, PowerShell and azure.
Here is the script I finished with.