Skip to content

Programming

Note-Taking

Few of us could live life without jotting down our thoughts somewhere. Throughout the years we have developed some sort of note-taking system, either cobbled together slowly by ourselves, or something off the shelf.

I use electronic notes primarily as they are more accessible compared to paper notes and can be backed up easily.

Previously I used a Word document synced on Google Drive. However, this came with several limitations:

Artificial Intelligence, Language Models and Understanding

Emerson AI, a GPT-3 based chatbot
Emerson AI, a GPT-3 based chatbot

Update: I discuss more on the measure of intelligence in this post.

Every decade, huge advancements are being made in the field of artificial intelligence, and each time we are amazed. In the 1960s we had ELIZA, a convincing human-like chatbot. In the 1980s, the world watched as Deep Blue defeated Garry Kasparov for the first time. In the 2010s, the resurgence of deep learning completely transformed prior approaches in nearly all domains, from images and video, to text and speech.

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.