Skip to content


A space for my thoughts.

I don't write anything too serious on here; these are mostly shower thoughts from an engineer. Browse on the navigation menu on the left or type in the search bar at the top to look for articles. Click on the links in the footer to view my homepage or to send me an email. Enjoy!

Blessed Units

Let's get rid of pounds, kilograms, feet, meters, seconds, and degrees altogether and come up with a new, pure unit system to describe our world, the Blessed Unit System, or BUS, pronounced booze. For example, lets use "speed of light"s to describe quantities of velocity. Since this is a blog post and not a scientific research paper, let's keep this simple, assuming there are only 4 (out of the seven) physical base units in our universe. Let's also assume our universe has 4 fundamental constants. See the tables below for the list of each and symbols.

Table of Reference

Base Unit Symbol
Mass M
Length L
Time T
Temperature H
Constant Symbol
Speed of Light C
Gravitational Constant G
Boltzmann Constant B
Planck Constant h

Let's create the Blessed Unit System using these fundamental physical constants. First, we need to define the constants in terms of their base units. For this, we can break down each constant into it's base units and combine them by adding or subtracting their exponents. Units of length, for example, are expressed in L or L^(1). Area, which is length squared, is expressed in L*L = L^(1) * L^(1) = L^(1+1) = L^(2). Inverted units are subtracted instead of added, because they have negative exponents.

Speed of Light

The speed that electromagnetic radiation travels in a vacuum

C = Length / Time
  = L^(1)T^(-1)

Gravitational Constant

Proportionality constant between the gravitational force of two bodies and their masses and distance apart

G = Force * Length ^ 2 / Mass ^ 2
  = M^(1)L^(1)T^(-2) * L^(2) * M^(-2)
  = M^(-1)L^(3)T^(-2)

Boltzmann Constant

Proportionality factor that relates the thermal energy of gas particles with their temperature

B = Energy / Temperature
  = M^(1)L^(2)T^(-2) * H^(-1)
  = M^(1)L^(2)T^(-2)H^(-1)

Planck Constant

The ratio of a photon's energy over its wavelength

h = Energy * Time
  = M^(1)L^(2)T^(-2) * T^(1)
  = M^(1)L^(2)T^(-1)

Combining Fundamental Constants

We can combine fundamental physical constants the same way they were derived. For this exercise, let's multiply the speed of light by the gravitational constant.

C * G = L^(1)T^(-1) * M^(-1)L^(3)T^(-2)
      = M^(-1)L^(1+3)T^(-1-2)
      = M^(-1)L^(4)T^(-3)

Since we multiplied a length (from C) and a length to the 3 power (from G), we now have a length to the 4 power! But what if we wanted to cancel out length, or even time? Let's start by making a more general case by multiplying C with some factor a by G with some factor b?

aC * bG = L^(a)T^(-a) * M^(-b)L^(3b)T^(-2b)
        = M^(-b)L^(a+3b)T^(-a-2b)

Now we have some options here! Length will cancel out when a = -3b, and the time factor cancels out when a = -2b. Mass only cancels out when b = 0. Great, now we're getting somewhere. We can rewrite our 4 fundamental physical constants into a matrix A.

         C  G  B  h
    M |  0 -1  1  1 |      | C |      | M |
A = L |  1  3  2  2 |  x = | G |  b = | L |
    T | -1 -2 -2 -1 |      | B |      | T |
    H |  0  0 -1  0 |      | h |      | H |

This gives us a linear combination of our fundamental constants and our base units. Now we can find the inverse of A. This is the result of plugging it into an online calculator.

         | -1 -3 -5  5 |
A^(-1) = | -1  1  1 -1 | * 1/2
         |  0  0  0 -2 |
         |  1  1  1  1 |

Not so pretty, but we can now use this to rewrite our linear combination from Ax=b to x=A^(-1)b. We get to pick b here depending on what our measurement dimension is. Let's run a quick test for units of velocity, which is length over time, or length to the first times time to the minus first. This is how we should set b up.

    |  0 |  (M)
b = |  1 |  (L)
    | -1 |  (T)
    |  0 |  (H)

For this value of b we should expect to get a value output of just C since the speed of light already matches these units exactly and can describe our quantity.

| -1 -3 -5  5 |   |  0 |         | 1 |  (C)
| -1  1  1 -1 | * |  1 | * 1/2 = | 0 |  (G)
|  0  0  0 -2 |   | -1 |         | 0 |  (B)
|  1  1  1  1 |   |  0 |         | 0 |  (h)

After solving A^(-1)b we obtain x = C^(1) as expected! That means we can express a speed as a multiple of the speed of light to the first power. This is not super interesting alone but is mainly used to test that the formula is working as expected. Let's do a more interesting example. How would we describe mass just using our 4 physical fundamental constants? Just set b = [ 1 0 0 0 ] and calculate.

| -1 -3 -5  5 |   | 1 |         | -1/2 |  (C)
| -1  1  1 -1 | * | 0 | * 1/2 = | -1/2 |  (G)
|  0  0  0 -2 |   | 0 |         |   0  |  (B)
|  1  1  1  1 |   | 0 |         |  1/2 |  (h)

The resulting x matrix tells us that we can express mass as a multiple of this quantity.

M = C^(-1/2) * G^(-1/2) * h(1/2)
  = sqrt[ (planck constant) / { (gravitational constant) * (speed of light) } ].

How to read this: Mass is measured in square root of planck's over gravitational-speed of lights.

Representing Base Units as Multiples of Fundamental Constants

We already calculated mass above, and to spare the reader from all the math, I calculated the remaining base physical units and inserted them into the table below, as well as some other commonly used dimensions.

Description Base Units Representation
Mass M sqrt(h/(G*C))
Length L sqrt(G*h/C^(3))
Time T sqrt(G*h/C^(5))
Temperature H sqrt(h*C^(5)/G)/B
Area L^(2) G*h/C^(3)
Volume L^(3) sqrt((G*h)^(3)/C^(9))
Density M^(1)L^(-3) C^(4)/(G^(2)*h)
Velocity L^(1)T^(-1) C
Acceleration L^(1)T^(-2) sqrt(C^(7)/(G*h))
Momentum M^(1)L^(1)T^(-1) sqrt(C*h/G)
Force M^(1)L^(1)T^(-2) C^(3)/G
Energy M^(1)L^(2)T^(-2) sqrt(C^(3)*h/G)
Power M^(1)L^(2)T^(-3) C^(4)/G
Pressure M^(1)L^(-1)T^(-2) C^(6)/(G^(2)*h)


Let's finish this up by wrapping up what I originally did this research for and use one of these newly represented quantities. First, an easy example: If I'm driving at 60 miles per hour (~100 KPH), what is my velocity in the Blessed Unit System (BUS)? Start by defining what my units of velocity are. From the table above, speed is measured in C, or "speeds of light". 1 speed of light (or 1 C) is just over 1 billion kilometers per hour. Using this simple formula, we can convert from SI to BUS units.

Velocity(BUS) = Velocity(SI) / (C)
              = 100 / 1 000 000 000
              = 0.000 000 1

My driving speed is 0.0000001 velocity BUS. It doesn't matter if I converted from standard SI or US units, or football fields per millisecond - my driving speed will be 0.0000001 velocity BUS no matter what.

Now, let's measure my height in length BUS. Length BUS are measured in sqrt(G*h/C^(3)). My height is around 5'9", or about 1.75 meters, let's translate it into square root of gravitational-plank over speed of light cubes. We can use the same formula as last time to determine my height in length BUS.

Length(BUS) = Length(SI) / sqrt(G*h/C^(3))
            = 1.75 m / sqrt(6.674E-11 * 1.055E-34 / (3E8)^(3)) m
            = 1.75 m / 1.615E-35 m  <-- Planck length!
            = 1.084E35 Length(BUS)

As it turns out, 1 length BUS is equal to 1 planck length. From the math, I am 1.084E35 planck lengths tall. The truly amazing thing about this unit system, is that it is completely independent from human interventions (e.g. redefining the SI unit system) and can work anywhere in the universe. The only reason that I needed to determine a conversion rate from BUS to meters (which turned out to be the planck length) is because our measurement tools on Earth currently only support measuring US or SI units - but if we adopt the Blessed Unit System, there would no longer be a need for either US or SI units. My height is always 1.084E35 planck lengths regardless of what human (or other) unit system it's converted from.

The Problem With Dates

I have a problem with... dates. But probably not the date you're thinking. Not going out, not the fruit, but the instance of time. Why? Good question.


Let's start small, wait a second. Second? Not first? Why is our base unit of time called a second? After some research, I discovered that it is the second (2nd) division of 60 in an hour, the first division of 60 being a minute. This explanation does little to subside my rage. However, it is time to move on.


One minute passes every 60 seconds. You can write a mathematical function to relate seconds (s) and minutes (m):

m = 60 * s

Surprisingly, the factor of 60 does not bother me here. It works just as well as any other number, if not better, since 60 has its own factors of 1, 2, 3, 4, 5, 6, 10, 12, 15, 20, 30, and of course, 60. It is still a bit of a strange number, and the leading theory is that you can count up to 12 on one hand using your thumb to point to a finger segment, and using your other hand to count the number of 12's, up to 5 times 12, or 60.


One hour passes every 60 minutes. You like where this is going, right? You can also express hours (h) in terms of seconds - 60 to the second power. Curious.

h = 60 * m = 60 * (60 * s) = 60^2 * s

So far, we have a nice pattern. We can say one minute is 60 to the first hours, and one second is 60 to the second seconds. You can also invert that and say that one minute is 60 to the minus first hours, and one second is 60 to the minus second hours. There was such a nice thing going, and this is where it all falls apart.


One day is the length of time it takes for the Earth to make one full rotation about its axis. One day (d) is about 24 hours.

d = 24 * h

Not only does this break the beautiful pattern, but as it turns out, one Earth day is not exactly 24 hours.


One month (M) is about the length of time that corresponds to one cycle of the moon's phases. Also, it is 28 days. And 29 days. And 30 days. And 31 days. It is truly an awful unit of time measurement.


One year (Y) is the length of time for Earth to complete one revolution around the Sun. It is always exactly 12 months, which contain a variable amount of days. One year is about 365 or 366 days.


This is an awkward one. One week (w) is always 7 days, but it is not often used with our timekeeping system, except to define days which are working and nonworking days, and planned recurring events every 7 day interval. There are about 52 weeks in one year.

Time Zones and Daylight Savings Time

There are other ways to further complicate the measurement of time including 38 time zones which have offsets ranging from 15 minutes, 30 minutes, 45 minutes, and 1 hour from adjacent time zones. Some of which employ daylight savings time which shifts the local time usually by 1 hour for a portion of the year.

What we've learned so far

There are exact ways to express seconds to minutes, hours, days, and weeks. The numbers with an asterisk are approximated.

s m h d w M Y
s 1 60 3,600 86,400 604,800 2.4Mil~2.7Mil* 31.5Mil~31.6Mil*
m 1 60 1,440 10,080 40,320~44,640* 525,600~527,040*
h 1 24 168 672~744* 8,760~8,784*
d 1 7 28-31 365-366
w 1 4~5* 52*
M 1 12
Y 1

The cells containing "X" have an exact factor from one unit of time to another.

s m h d w M Y
s X X X X
m X X X
h X X
d X

It's clear that months and years cannot be easily converted into any other unit of time besides each other. How do we fix this?

Proposed Solution

Our timekeeping system is in desparate need of an overhaul. My motivations to create a universal timekeeping system are:

  1. Uniform time across all timekeeping devices
  2. Time system does not depend on any planet or solar system
  3. Every unit of time has a clearly defined, constant factor to convert to any other unit of time
  4. With the above true, time still tells us useful information about the position of our Sun and the tilt of Earth (time of day and season of year)

I'm realizing there's no easy way to do this. Some of my ideas involved completely remove time zones and daylight savings time, which are unnecessary obstacles in my plan.

I also need to define an "origin" of time, for example 0 AD, or the Unix Epoch (1970.) I considered using the big bang for the origin time = 0 and the heat death of the universe to be the final time, or time = 1. All decimal values in between would represent instances in time which is uniform no matter where you are in the universe. One issue with that is the heat death of the universe is googols of years after the birth of the universe, which is currently about 14 billion years old. Using my proposed timescale, we are at about time = 0.000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 001. Of course we could increase our timescale from 0 to 1, to 0 to googol. Another similar idea is using the total measurement of entropy to measure time. Turns out this is actually a theory with some issues with it.

Really large or small numbers can be "adjusted" using the metric prefixes using a base 10 number system.

For a dimensionless quantity like I'm proposing to use as the base unit of time, to make sense on a planetary scale, you would need to know the rotation and revolution speed of the planet you're on to make judgements and predictions on when the Sun will rise, and when the seasons change.

It's undeniably difficult to create a time system that satisfies all these requirements and is simpler than our currently outrageous timekeeping system. Once humans begin to colonize other planets, we'll be faced with this issue again, and won't have the time to plan one out that works. Have any ideas how we could make a universal timekeeping system? Send me an email using the link below!

Building My PC

Want to learn about my frustrating journey to building my second PC? Read on!

Part I: Diagnosis

Sometime in August 2023, my power shut off for a few hours when I wasn't home. I'm not sure if this was the reason, but when I returned home, my computer would no longer turn on. To be more precise, it was getting power, the fans were spinning, but none of the LEDs would light up, and of course, no signal to the monitor. I tried everything I could find online to fix my PC, including but not limited to...

The simple fixes:

  • Unplugging my PC and trying a different power outlet
  • Trying different HDMI cables
  • Use the motherboard's IO port, instead of the GPU's, in an attempt to run off the CPU's graphics software

The still-pretty-simple fixes:

  • Clearing the CMOS
  • Reseating the RAM
  • Making sure the interior of the case is dust-free

The mildly-annoying fixes:

  • Replacing the CMOS battery
  • Unplugging all the PSU cables from the motherboard and plugging them back in one by one

The complicated fixes:

  • Removing all components from the case
  • Unplugging all the front IO cables and manually jumping pins to turn on
  • Removing all components, only install those in order for the PC to POST
  • Try 1 stick of ram at a time

After all these were through and through with no visible progress made, I narrowed down the issue to the motherboard or CPU, and decided it was simply time for an upgrade. After thorough research, I picked out these components on PCPartPicker. The RAM, SSD, and PSU were salvaged from my current (previous) build. Remember this for later.

Part II: Rebuild

I ordered all my new parts through Amazon, and put it together extremely carefully. I made the best effort not to touch any pins or contacts and grounded myself before any instance I needed to handle the motherboard. The first thing I did was to remove the old case fans from my previous case to install on the new one. No problem.

Then, I did a minimal installation sitting atop a cardboard box. It's just the CPU and 1 stick of RAM, all connected to the power supply. After jumping the on/off pins, the fans spin up and the LEDs turned on. After connecting the HDMI cable, I get a signal, hooray! Surprisingly, no issues at all so far.

Things start to get a little tricky with the SSD and GPU - this motherboard has a heatsink for the SSD, which is very close to where the GPU sits. But again, after some finesse with the installation, they fit perfectly. After plugging the HDMI into the GPU and powering on, I luckily get an error message; turns out I forgot to supply power to the GPU fans. After fixing that, so far so good.

Next step is to install everything in the case, which is difficult due to the lack of clearance on 2 sides of the motherboard. I was terrified during this step, because it is nearly impossible to avoid touching pins/metal on the motherboard. Eventually I get everything screwed in thanks to a magnetic screwdriver.

The last step was to plug in all the front IO cables and hope for the best. This was difficult once again due to lack of clearance, I had to wiggle the cables just to sit on top of the pins, and gently push them in using pliers. After finding the power button (which blended into the case, I'm not proud of how long it took me...) the monitor received a signal! The only issue was the case LEDs not turning on. I tried a different set of pins, still no luck. I actually gave up on this, but later found out there was a small button on the case to turn them on! (Wow, this is embarrassing.)

So as of now, my fully-built computer turns on and sends a signal to the monitor.

Fun fact: I actually finished the build at around 2:00 AM. It was an extremely warm night and I couldn't sleep.

Part III: Backup

My SSD still has old files which I want to keep. It also contains my old OS, Windows and drivers for my old PC components. I read online that booting a new computer with a disk containing drivers built for your old components can potentially cause damage to your hardware. (E.g. voltage/current settings.) Despite the low risk, I did not want to risk this. So now I'm stuck with a disk I cannot boot into.

Luckily, my computer scientist friend taught me to create a bootable USB with Ubuntu OS, which access files on your disk. This is exactly what I did. I created a bootable USB using Kubuntu OS (22.04) and booted with that. I also had an empty flash drive to use for my backup files. The backup took forever, and actually froze at one point and I had to restart, but eventually it ran to completion.

Part IV: Install

After my files were backed up on a flash drive, I installed Kubuntu. It destroyed any data that was left over on the SSD and replaced it with the new operating and file systems. This should have been the end of story, but unfortunately, that couldn't be further from the truth.

Up until now, the hardware and software installs have been relatively straightforward, with no major hitches. From the first power-on with the new Kubuntu OS, it was stuck in the boot loader, which displays a low-resolution terminal called Grub. To actually complete the boot, I ran the following commands I found in this StackOverflow post.

set prefix=(hd0,gpt3)/boot/grub
set root=(hd0,gpt3)
insmod linux
insmod normal

After the OS finally finished booting up, I discovered all sorts of software problems, since my OS was still in "recovery mode." That post, as well as others, recommends a permanent fix by running sudo update-grub and sudo grub-install, or by installing the Boot Repair utility. None of these fixed the problem; every time I would reboot, my computer would get stuck in the boot loader stage. I attempted to re-install Kubuntu, twice (once with 3rd party drivers, and once with a minimal installation), and ran into the exact same issues both times.

From the error messages I received from the Grub commands and Boot Repair, I finally discovered that my SSD was using the incorrect file system type. At the moment I'm writing this, I cannot recall what file system type it was, but the Linux OS family uses the EXT4 file system type. There was an option in my motherboard's BIOS to format and sanitize the SSD. After this ran to completion, and reinstalling Kubuntu, it finally booted with no errors.

The only small catch was that my GPU was unrecognized, so I needed to install the corresponding driver for it.

Part V: Printer Shenanigans

Home stretch...

  • The hardware is fully built out
  • The software runs as intended
  • The OS boots completely every time
  • I've done some fun customization with on-board LEDs
  • Essential software is installed (GPU drivers)
  • "Essential" software is installed (VS Code, Brave, Inkscape...)
  • I've imported my backup from the flash drive

I own a Canon MX410 wireless printer, which is already connected to my network. My PC can "see" it, so I give it a try. No response from the printer, and the printer queue is immediately emptied. This is going to be fun, isn't it...

Kubuntu comes with several printer drivers pre-installed, but naturally the MX410 is not in the list. The next logical step is to check the Canon MX410 website, which contains not the driver itself, but source files, which need to be compiled and built. On first attempt, the build fails due to lack of dependencies. Usually, this is no problem, but two of those dependencies are libpng12 and libtff4, which are now deprecated for their newer versions 16 and 5 respectively. Of course, I install the newer versions, being the only option anyway. This doesn't satisfy the requirement, and since these versions are not found to download, I turn to other options. I explore the list of pre-installed Canon drivers and try some at random, with no results. OpenPrinting contains drivers for several legacy printers, but no luck again. That means it's time to track down the deprecated libraries and manually build the driver. Sure enough, someone on StackOverflow asked the exact thing I am trying to achieve (libpng12 and libtiff4). With some sweat and tears, and these commands...

tar zxvf cnijfilter-mx410series-3.50-1-deb.tar.gz
cd cnijfilter-mx410series-3.50-1-deb
sudo ./

...The driver built sucessfully, and the printer was finally conquered!

The birth of my 3 'main' websites

Hello, world! This is my first post on this website, although I may retroactively add some prior work. Today I had time to work on my own projects, and I finally knocked this one out of the way. Today marks the birth of my 3 'main' websites. Those being:

  1. This one:
  2. My photography website:
  3. And, my homepage: (or

At work, I recently learned about a technique to generate beautiful documentation using a software package called mkdocs. I immediately started playing around with it and discovered it can be used for so much more than code documentation. As of this article, all 3 of my mentioned websites are using mkdocs to build the website.

How does it work?

mkdocs takes input markdown files and generates a HTML and CSS code package that can be hosted at any modern web hosting service. GitHub Pages is a good solution, since it is free, and I am just generating static pages. The input markdown files can be extended to also include custom HTML and CSS, but unless you are trying to do something very specific, it's usually not necessary.

It also requires a "theme." There are a few builtin themes in mkdocs but there are several professional-quality themes that are built and maintained by the community. My favorite theme by far is mkdocs-material because of its extensive configuration options. I am using the same theme with similar configuration for all 3 of my websites. Notice its versatility, going from a blog, to a photography website, to a single-page portfolio.

Minor Differences

Each website had its own complications associated with building it initially. For each one, I had to set up a corresponding mkdocs.yml configuration file for mkdocs, and a .github/workflows/pages.yml workflow file to automatically stage, build, and deploy each website on every commit. Each of these files had minor (or major) differences going from one website to the next.


By far, this was the simplest configuration to implement. My goal was to remove the top bar entirely, but unfortunately this was not possible without additional CSS. (I wanted to avoid custom CSS to ensure not to overwrite any of the CSS rules generated by mkdocs.) However, I found it possible to remove the search bar, navigation bar, and table of contents, simply with this bit of YAML:

# mkdocs.yml
plugins: []

  - navigation
  - toc

The only other oddity in this setup was the profile image the Download Resume button. For both of those, I had to go against my previous statement and use custom CSS. Instead of including an entire stylesheet, I entered the style rules directly in using CSS selectors. This was made available by the attr_list extension. Here is my profile picture, as an example:

![Me](me.jpg){ style="max-width:200px;height:auto;float:right;" }


For this one, I had to install the blog plugin from mkdocs-material. At this point in time, it's not a full-fledged feature yet, so it is only compatible with the latest beta version of mkdocs-material. Unfortunately, the beta version of mkdocs-material takes about twice as long to install in the GitHub workflow (from about 10 seconds to 20, so not a huge issue.) The blog plugin also expects a different file structure by default, so I had to add some configuration to indicate which directory my blog posts are in, as well as additional configuration for the navigation dropdown menu.


By far this was the most complicated development. First I need to describe my planned process of maintaining this website:

  1. Take a new set of photos
  2. Create a new folder in my website directory that follows the pattern: YYYY/MM/Location
  3. Dump my photos in the new folder
  4. Rename the photo files to set their captions

In this process, I do not want to create any markdown files manually. I created a Python script to search for all image files and generate an entire package of markdown files to use in the website and execute mkdocs. This Python script carefully does not package any image files into the final website structure. Why? Each image is 1-10MB. Currently there are over 60 photographs on my website, still early in development. Taking an average case of 5MB per file, that makes 300MB total, or about 1/3 GB, not including any other files!

Originally, my Python script packaged all images in the website. I realized this was unsustainable early on, when the GitHub workflows were taking over 5 minutes just to upload the website! After I made the change to ignore the images, the total process start to finish takes around 30 seconds to 1 minute only!

But how does the website still render the photographs at all? I marked that GitHub repository as public, which means the files are publicly hosted for all to see. I modified the script from referencing local image files, to remote-hosted files, from my GitHub repository. Surprisingly, this actually made my website load even faster! Thanks, GitHub!

Domain Name Availability


One of the first things you need in order to set up a website is a domain name. Ideally, a good one. A domain name is a combination of numbers, letters, and possibly hyphens ending in a top level domain (TLD). An example of a TLD is .com. Good domain names are hard to obtain. More specifically, short domain names ending in .com are hard to obtain. Are there any left?

Top Level Domains

The most common TLD is .com but there are many others.

TLD Description Attainable?
.com Commercial Yes
.org Non-profit organization Yes
.net Network Yes
.edu Academic uses only No
.gov Issued by the US government No
.us US country code TLD (ccTLD) Yes*
.info Informational Yes
: : :
.xyz Generation X, Y, Z Yes

*Must be a US resident or citizen.

There are other TLDs like .flowers but those will not be considered here.

Name Analysis

Let an example domain be That is 5 letters, so it has the pattern of or A domain like has 5 digits, so it can has the pattern of or Both of these examples fall under the category of 5-character domains, or or If you wanted a 1-letter domain, like, there are 26 possibilities. There are only 10 possibilities for single-digit domains; and 36 possibilities combined for either one letter or one digit. However, it is basically impossible to own a single-character .com domain at this time. Several of them are already owned, and the rest of the C.tld and CC.tld domains are reserved by registries and impossible to register a new one. The only possible way to own one is to buy one of the few that still exist in the wild for likely millions of dollars. The next closest thing is a 3C.tld domain. These are in fact possible to obtain or register, but typically are only available through resale. Three characters increases the total supply by a lot so it may be possible to register one depending on the TLD. Now we will see how many possible domains exist with different patterns and whether they can be pronounced or not.


Unfortunately, these domains are virtually impossible to get for any top level domain.

Pattern Total Amount 26 10 36


Like single-character domains, these are mostly registered, and it is impossible to register any new ones.

Pattern Total Amount 676 100 1296

These are the amount of domains that contain a specific pattern.

Pattern Total Amount 260 260


As stated before, these are possible to obtain and even register due to the higher supply.

Pattern Total Amount 17,576 1,000 47,952

You might notice that the total supply is not 36^3 = 46,656 but instead 47,952. This is because with 3 characters, we can use the hyphen in the middle since it cannot be at the beginning or the end of the name. Most of these domains are unpronounceable, if for example you wanted a consonant-vowel-consonant pattern (CVC) then that reduces the supply to only 2,205, assuming that y is a consonant.


There are much more of these, but and's are still they are hard to get due to a high demand.

Pattern Total Amount 457k 10k 1.77M

Again, notice how the supply of is not 36^4 = 1.68M. This is again because of hyphenation. It is not too hard to find's in 2022, but most of them don't spell anything and are worthless. A CVCV pattern could be pronounceable, but that limits the supply to only 6400 and still includes domains like qije or xoqu. That supply could be doubled if a search of CVVC is allowed, which is just shy of 3% of the supply of domains. It is easier to find pronounceable or other TLDs.


These are typically available except for key words.

Pattern Total Amount 11.9M 100k 65.6M

Anything above this is usually available except for popular words as well. At 5 letters, the supply is enough to find availability and to narrow the search to find something pronounceable.

Pattern Total Amount 232k
No: j, q, x, z 123k

Requiring 3 consonants and 2 vowels leaves only about 2% of the combinations from the 5-letter sample size. Even just removing 4 letters from that subset almost halved the amount of combinations, which is about 1% of the original sample size. However, the vowels can be rearranged in a CVCCV or CCVCV pattern and possibly be pronounceable, which increases the sample size by a factor of 3, or about 3% of the supply.


The following is a rough number of pronounceable combinations of 6 letters.

Pattern Total Amount 309M 1M 2.4B

Let's arbitrarily allow the following patterns to make it "pronounceable":

3C, 3V 4C, 2V

There are 9 combinations with 3 vowels and 3 consonants:

9 * (26-5)^3 * 5^3 = 10.4M

There are 4 combinations with 2 vowels and 4 consonants:

4 * (26-5)^3 * 5^2 = 926k

That means the estimated total number of pronounceable 6 letter combinations is generously about 12M, since there could be other consonant-vowel patterns not listed here, but some of the combinations that would be generated from these patterns are not pronounceable and should be discounted from the list. To continue the trend, 12M is about 3% of the original 309M.


In conclusion, while good and short .com domains may not be easily found, .net and .org may provide good alternatives. There are about 10,000 pronounceable 4-letter, 400,000 pronounceable 5-letter, and 12M pronounceable 6-letter combinations which are very rough estimates around 3% of the original set of combinations.

How To Win at Rock-Paper-Scissors


There are 3 basic rules to the game of Rock Paper Scissors. You and one opponent both hold out a closed fist and count down, usually with a "Rock, Paper, Scissors" or "Rock, Paper, Scissors, Shoot." Clarify with your opponent beforehand to make sure you both are on the same page in terms of the countdown method. During this time, you both will think of Rock, Paper, or Scissors at random (ideally) and use the appropriate hand gesture to display which object you had chosen.

Game Rules

  1. Paper beats Rock
  2. Rock beats Scissors
  3. Scissors beat Paper

A tie can occur if both you and your opponent play the same object.

Although random gameplay is ideal for Rock Paper Scissors, this is almost never the case, unless with computers, but even then, 'random' is arguable. Human behavior randomness can be easily predictable. This creates flaws in the (ideally random) game of Rock Paper Scissors. With this knowledge, there are 3 basic rules to winning the game of Rock Paper Scissors.

Behavioral Rules

  1. Winners stay the same.
  2. Losers change.
  3. Your opponent may know rules 1 and 2, even if subconciously.

So, how do you win at Rock Paper Scissors? It's not that simple. You must consider the knowledge of your opponent to judge which object to play next based on the current play, and this can change throughout the game, usually in this order.

Cases that make the behavioral rules complicated

  1. Your opponent may not know any of these rules above.
  2. Your opponent may know rules 1 and 2.
  3. Your opponent may know rules 1, 2, and 3.

In the following tables, the first horizontal row is your last move and the first vertical column is your opponent's last move. Inside the cells in the table is what your next move should be based on your opponent's predictable behavior.

Case 1

Your opponent does not know the behavioral rules.

They still unknowingly abide by behavioral rules 1 and 2 which makes their next move fairly predictable. For example, if you played Rock and your opponent played Paper, they would win that round. Because they won, they would not likely change their move, sticking to Paper. Knowing their next move, you could play Scissors and win the round. Another example, if they played Scissors and you played Rock, you would win. Knowing they would change to Paper beat your play, you can simply counter with Scissors. A tie is counted as a loss for the opponent, because when you tie, they know their current play cannot win them the game. The following is a table demonstrating all the move possibilities for this case only, showing what move you should play next based on the current play.

ROCK scissors rock paper
PAPER scissors rock paper
SCISSORS scissors rock paper

Summary: In Case 1, your next move should be whichever object would lose to the one you had just played, regardless of your opponent's move.

Case 2

Your opponent knows behavioral rules 1 and 2.

Your opponent assumes that you will follow rules 1 and 2 and plans their move accordingly. For example, if you played Rock and your opponent played Paper, your opponent would win that round. Assuming that you would change your object to Scissors to beat their Paper, they would play Rock. Therefore, you should play Paper to beat their Rock. Another example, if they played Scissors and you played Rock, you would win that round. Knowing that winners stay the same would cause them to choose Paper to beat your following Rock. However, you can counter by playing Scissors. In the case of a tie, in this example, 2 Rocks are played. Your opponent would assume you would switch to Paper to beat their Rock, so they pick Scissors. You can win the next round by playing Rock again.

ROCK rock rock rock
PAPER paper paper paper
SCISSORS scissors scissors scissors

Summary: In Case 2, your next move should be what your opponent has just played, regardless of your move.

Case 3

Your opponent knows behavioral rules 1, 2, and 3.

Consider this. Your opponent will follow the same process that you had just went through in Case 2. This table is the same table you saw in Case 2 with the X and Y values switched to show your opponent's moveset instead. Their moves are in the first horizontal row and your moves as the first vertical column.

ROCK rock paper scissors
PAPER rock paper scissors
SCISSORS rock paper scissors

Therefore, in order to beat your opponent, you must plan your next move to beat your own thought process from Case 2. Just play whichever object will win in each cell of the table shown above. Below is the table for what you should play.

ROCK paper scissors rock
PAPER paper scissors rock
SCISSORS paper scissors rock

Summary: In Case 3, your next move should be whichever object would beat your current play, regardless of your opponent's move.

There aren't just 3 cases. There are an endless amount which use the same process.

N^th Case Process

  1. Start with the table from the (N-1)^th case.
  2. Flip the X and Y values to see which move your opponent will play.
  3. Play whichever object will beat your opponent's object.

Example: Case 4

Your opponent will follow the same process that you had just went through in Case 3. This table is the same table from Case 3 with the X and Y values switched to show your opponent's moves as the first row and your moves as the first column.

ROCK paper paper paper
PAPER scissors scissors scissors
SCISSORS rock rock rock

To win, simply pick the object which will beat your opponent's move.

ROCK scissors scissors scissors
PAPER rock rock rock
SCISSORS paper paper paper

This works for any case, assuming your opponent strictly follows these rules. Of course, there is always some randomness in human behavior, so don't expect this to work all the time. Maybe not even half the time. You will win a truly random game of Rock Paper Scissors only 33.3% of the time. But maybe this guide can give you a few percent boost. Good luck!