Around October or November of 2017. I walked upstairs in my previous apartment, sat down at the desk I'm at now, and thought to myself:

Alright, time to write some code. This should be fun!

With a faint idea of something to work on, I popped open Visual Studio Code, and then sat here for a while:

An empty, sad Visual Studio Code window


Some days, I get complacent. So complacent, in fact, that I let myself slip into thinking I know Javascript. If this fact alone doesn't make you sigh, well, thanks for your understanding. Here was today's unexpected adventure.


This is a series about trees! Search trees, that is.

To recap Part 2, we built ourselves a BST to track our favorite usernames. This lets us add, remove, and find these usernames in “logarithmic time” which means the amount of stuff we look at is cut in half at each step.

However, we saw one of the issues with the plain BST. The performance is directly impacted by the order elements are added. This isn't great. So let's explore an option to overcome this limitation which is generally speaking known as a self-balancing binary search tree. Our specific pass at it is known as a AVL BST.

My code for implementing an AVL BST in F# if you want to jump right in.


This is a series about trees! Search trees, that is.

To recap our story, we love usernames. We collect them, and so do our friends. We love to compare our lists of usernames together to see how they're similar. This is tedious though, so we decided to sort it and search through it. Much better, but keeping this list sorted is a project in of itself.

So let's build ourselves a method to keep better track of these lists. We'll implement what's called a Binary Search Tree for this.

My code for implementing a BST in F# if you want to jump right in.


This is a series about trees! Search trees, that is.


A brief moment on copy-paste. Copy-pasta, if you're into that kind of dish.

I whine about copy-paste often. I whine about it at work a lot. I whine about it to the point where the joke “look out, pseudoramble will be angry if he sees you copying-and-pasting!” is a fan favorite.

I have my reasons for whining about copy-pasta (mainly that I've made these mistakes). I wanted to make my own thoughts both more clear and less hard-line than I've managed to set myself up for.


Something that's easy to forget in the world of software development is that testing is a major time investment. Testing has a variety of meanings depending on the context of course. But here we mean attempting to show software correctness by exercising code.

I've recently been poking around at a form of testing known as property-based testing.

What's a property-based test?

To quote the website Abstractivate:

“Property-based tests make statements about the output of your code based on the input, and these statements are verified for many different possible inputs.”

Property-based looks at the input & output of a function to describe details about the output itself. A description is provided for the parameters needed for that function. Test data is then generated from these descriptions, which helps tease out harder-to-find scenarios.


After about 1.5 years with my previous workspace setup, a move to a new apartment, and a Facebook ad, I felt the need to try out a new desk.

Current Setup!


  • After about a week with this desk, I'm happy with the end result.
  • The desk is the SmartDesk2 (
    • Electric standing desk with presets and automatically raises to that setting.
  • Price can be as low as $250 (before shipping).
  • If you're on a timeline to get a desk, you need to look elsewhere.
  • Setup is straightforward, but some easy-to-make mistakes.
  • Quality of the desk for the price is impressive.

You're a few steps away from the final battle in FFVII. Just a few more platforms to traverse until you reach the last Jenova fight.

You just pray to some Playstation developer to not make you fight again. When you inevitably have an encounter, maybe you wonder why Playstation developers hate you. Or perhaps you wonder “how did they decide to put me into a fight now?!”

You've once again run into pseudo-random chance, created by a pseudo random number generator (PRNG). This is a process to create numbers where a sufficient sample pass set of statistical tests that say a process creates “random-looking enough” numbers.


I am not fantastic at math. I've always found it interesting, but it's never come to me naturally. Sometimes it's good to face things you're not good at and give them a shot! So here we are, goofing off with prime numbers (again).

Here's what we talked about the last time we goofed off with prime numbers.

I don't feel like reading your last entry. What are you talking about?

Last time we talked about what a prime number is, and how to generate a set of prime numbers within some range using a sieve. This included some sample code in F# that you could use if you wanted to.

Here's another potential grade school thing you may have forgotten – Any natural number can be formed by using a series of prime numbers put together! This was something I forgot about until learning more about prime factorization.