Skip to content

Programming

Best Practices for Debugging Service Workers

Service Workers are a great way to add offline functionality to your app, as well as speed up subsequent page loads (especially with the app shell model).

I recently encountered many issues while debugging, and to save myself and others the hassle, here are some of the best practices I recommend when debugging service workers.

Setup SSH with Certificates on Windows (and a bit of Linux)

The Secure Shell Protocol (SSH) allows one to remotely access a terminal interface on a remote machine. In addition, it allows for capabilities such as port tunneling1, file transfers and screen forwarding.

The main reasons for setting up SSH access on my machine were to allow me to:

Developing in WSL Containers (Now with GPU support!)

As a programmer there were a lot of version/environment issues I faced while developing with Python, Node and other tools. Some examples:

  • Switching between different Python versions on Windows is difficult and requires third-party solutions e.g. Chocolatey
  • Switching between different Node versions also requires a third-party solution (nvm)
  • While pipenv, venv and poetry are ways to manage different Python environments, they still depend on the base Python version installed, which is another external dependency
  • Maintaining other dependencies such as CUDA drivers, ffmpeg etc.

The useLayoutEffect hook

Suppose you have a parent component A and a child B, and you want to run a useEffect hook on mount in the parent first, followed by another useEffect hook in the child.

For example, you have a child component which overrides the default styles of the parent on mount.