email contact

NOTE: You should not use the above for legitimate contacts. This is a spam honeypot. All messages sent to that domain are assumed malicious/spam.

My VIM CTAGS Cheatsheet

The longer I work with computers and software development the more I fall in love with a VIM based workflow. Recently I’ve discovered the joys of CTAGS. This is a simple cheatsheet to help me as I’m initially learning to integrate this tool into my workflow. Perhaps you’ll find it useful as well. Generating Tags The tags can be generated by simply running: ctags -R VIM Cheatsheet Command Function Ctrl + ] Go to definition Ctrl + T Jump back from the definition Ctrl + W Ctrl + ] Open the definition in a horizontal split :ts <tag_name> List the tags that match <tag_name> :tn Jump to the next matching tag :tp Jump to the previous matching tag

July 30, 2021 · 1 min · Adam Thompson

This Site's New Tech Stack

I just finished moving this website over to a brand new tech stack. To be a bit more specific, the site is now using Hugo and is deployed to Google’s Cloud. This post will take a look at the old setup, the new setup, and I will talk a bit about some future plans. A Bit of History I first started this little technical blog back in 2016 as a Jekyll site hosted on Github Pages....

April 5, 2021 · 4 min · Adam Thompson

CS Review: Merge Sort

Merge sort is among the divide and conquer algorithms. That is to say, it divides the input array into half, calls itself on both halves. This process is done recursively over the entire array. When we’re done, all the individually sorted pieces are merged back together to form the fully sorted array. A Closer Look at the Functionality Merge sort can be a bit hard to wrap your head around when you first hear it, so let’s take a look at how the process looks on an example array....

February 28, 2021 · 4 min · Adam Thompson

CS Review: Quicksort

Quicksort is another one of the divide and conquer sorting algorithms. It works by partitioning the array around some chosen pivot point, which there are a few different ways to choose. Quicksort is generally preferred over merge sort for sorting arrays due to the fact that the general form of the algorithm sorts in-place. How Quicksort Works As has already been mentioned, quicksort partitions your array of data based on some pivot point....

February 28, 2021 · 4 min · Adam Thompson

CS Review: Bubble Sort

Bubble sort is the easiest possible sorting algorithm you could imagine. It works by simply iterating over an array of data and comparing adjacent items. If those items are in the wrong order, then they are swapped. In doing this, the largest items “bubble up” to the correct position in the array (assuming ascending order, anyway). While this is great from a simplicity standpoint, it’s a pretty awful solution in terms of efficiency....

February 27, 2021 · 2 min · Adam Thompson

CS Review: Selection Sort

The previous sorting algorithm we took a look at was bubble sort. This time around we will be taking a look at selection sort, which is slightly more complex than bubble sort, but only by a tiny bit. The idea behind selection sort is that you keep iterating over your array of data, finding the minimum element each time and placing it at the start of the list. In this way, you can think of selection sort as managing two subarrays: the portion of the array that is sorted and the portion that still needs to be sorted....

February 27, 2021 · 2 min · Adam Thompson

A Review of Binary Search Trees

My previous computer science review post took a look at the tree data structure. This time around we will be exploring a specific kind of binary tree: The Binary Search Tree. Let’s not waste any more time and just jump right in! What is a Binary Search Tree? A Binary Search Tree (BST) is a binary tree such that the following holds true: The left sub-tree contains only nodes whose values are less than the parent’s value....

February 26, 2021 · 4 min · Adam Thompson

A Review of Graphs

You may have noticed that I’ve been putting a lot more work into writing posts for my Computer Science Review series lately. The last installment of this series took a look at binary search trees. This time around we will be taking some time to review one of my favorite data structures: Graphs. What is a Graph? If you look at the formal definition of a graph, such as the one that you might get in a discrete mathematics course, you’ll get something along these lines: A graph is an ordered triple (N, A, g) where N is a nonempty set of nodes or vertices, A is a set of arcs or edges, and g is a function associating each arc a with an unordered pair {x, y} of nodes....

February 26, 2021 · 11 min · Adam Thompson

A Review of Binary Trees

In my previous review series, I wrote a brief review of set theory. This time around we’ll take a look at the binary tree data structure. The tree structure is very common, incredibly useful data structure in the field of computer science and it’s essential that any engineer understand how they work. The Tree Data Structure A tree, unlike some other data structures, such as an array, linked list, stack, or queue, is a hierarchical data structure....

February 25, 2021 · 13 min · Adam Thompson

A Brief Review of Set Theory

Set theory is the branch of mathematics that, unsurprisingly, deals with sets. It’s an area of great importance in a number of fields, including computer science. In this post, I’ll go over a brief review of basic set theory as it pertains to those pursuing an interest in computer science. Let’s just jump right in! What is a Set? The first and most logical question we can answer about set theory is just what is a set?...

January 11, 2021 · 14 min · Adam Thompson