Changing Global Land Borders Since 3000 BCE

When you look at a map of the world today, you’ll see a bunch of lines. These lines are often the cause of dispute for all sorts of reasons including non-sensical ones like the sense of superiority of members of one state versus those of a neighboring one. What many people seem to forget or not realize is that these borders never used to exist and are completely made up. For example, Arabia used to be one large area with no borders. Now, with there being many borders, people living in one area like Saudi Arabia may have a sense of superiority over people in a neighboring area like Yemen. This may be because Saudi Arabia is one of the richest countries in the world (only after having discovered large oil reserves) whereas Yemen is one of the poorest. Another example is the people of India and Pakistan. The maps below show the changing borders in that part of the world. Prior to August 15, 1947, there was one country (India). Then, the British split it into two thereby creating a new country in the north called Pakistan. Now, it is not uncommon to see people in both countries claim superiority over the other despite the fact that they were all from the same country (India) just ~70 years ago. I think Yanni explained it well when he commented about world borders.

This post contains 3 sections. 

  1. Video (4K) of a map of the world with changing borders from 3000 BCE to 2013 CE in intervals of 100 years
  2. Table of significant historical events that had an effect on geographic borders
  3. List of maps (4K) showing borders from 3000 BCE to 2013 CE in intervals of 100 years

Changing Map of the World Video

Table of Significant Historical Periods

Ancient History (3000 BC – 476)

3000 BCE2271 BCESumer

Sumer is the earliest known civilization in the historical region of southern Mesopotamia (south-central Iraq).
2686 BCE2181 BCEOld Kingdom of Egypt

In ancient Egyptian history, the Old Kingdom is the period spanning c. 2700–2200 BC. It is also known as the “Age of the Pyramids”.
2500 BCE563 BCEAncient India

According to consensus in modern genetics, anatomically modern humans first arrived on the Indian subcontinent from Africa between 73,000 and 55,000 years ago. By 4500 BCE, settled life had spread more widely, and began to gradually evolve into the Indus Valley civilisation. Their Vedic Period (1500–500 BCE) was marked by the composition of the Vedas, large collections of hymns of these tribes. Their varna system, which evolved into the caste system, consisted of a hierarchy of priests, warriors, and free peasants.
2270 BCE2083 BCEAkkad

The Akkadian Empire was the first ancient empire of Mesopotamia after the long-lived civilization of Sumer. It was centered in the city of Akkad and its surrounding region. The empire united Akkadian and Sumerian speakers under one rule. The Bible refers to Akkad in Genesis 10:10–12.
2083 BCE1699 BCENeo-Sumerian Empire

The Third Dynasty of Ur, also called the Neo-Sumerian Empire, refers to a 22nd to 21st century BC (middle chronology) Sumerian ruling dynasty based in the city of Ur.
2055 BCE1786 BCEMiddle Kingdom of Egypt

The Middle Kingdom of Egypt (also known as The Period of Reunification) is the period in the history of ancient Egypt following a period of political division known as the First Intermediate Period. The Middle Kingdom lasted from approximately 2040 to 1782 BC, stretching from the reunification of Egypt under the reign of Mentuhotep II in the Eleventh Dynasty to the end of the Twelfth Dynasty.
2000 BCE1400 BCEMinoan age

The Minoan civilization was a Bronze Age Aegean civilization on the island of Crete and other Aegean Islands, whose earliest beginnings were from c. 3500 BC, with the complex urban civilization beginning around 2000 BC, and then declining from c. 1450 BC until it ended around 1100 BC. The term “Minoan” refers to the mythical King Minos of Knossos, a figure in Greek mythology associated with Theseus, the labyrinth and the Minotaur.
2000 BCE590 BCEChina

According to Chinese tradition, the first dynasty was the Xia, which emerged around 2100 BCE. The Xia dynasty marked the beginning of China’s political system based on hereditary monarchies, or dynasties, which lasted for a millennium.
1830 BCE1531 BCEFirst Dynasty of Babylon

The Old Babylonian Empire, or First Babylonian Empire, is dated to c. 1894 BC – c. 1595 BC, and comes after the end of Sumerian power with the destruction of the Third Dynasty of Ur, and the subsequent Isin-Larsa period.
1660 BCE1178 BCEHittites

The Hittites were an Anatolian people who played an important role in establishing first a kingdom in Kussara (before 1750 BC), then the Kanesh or Nesha kingdom (c. 1750–1650 BC), and next an empire centered on Hattusa in north-central Anatolia (around 1650 BC).
1600 BCE1100 BCEMycenean age

Mycenaean Greece (or the Mycenaean civilization) was the last phase of the Bronze Age in Ancient Greece, spanning the period from approximately 1750 to 1050 BC.[1] It represents the first advanced and distinctively Greek civilization in mainland Greece with its palatial states, urban organization, works of art, and writing system.
1590 BCE1240 BCEMitanni

Mitanni was a Hurrian-speaking state in northern Syria and southeast Anatolia (modern-day Turkey).
1550 BCE1069 BCENew Kingdom of Egypt

The New Kingdom, also referred to as the Egyptian Empire, is the period in ancient Egyptian history between the sixteenth century BC and the eleventh century BC, covering the Eighteenth, Nineteenth, and Twentieth dynasties of Egypt.
1353 BCE968 BCEMiddle Assyrian Period

The Middle Assyrian Empire was the third stage of Assyrian history, covering the history of Assyria from the accession of Ashur-uballit I c. 1363 BC and the rise of Assyria as a territorial kingdom to the death of Ashur-dan II in 912 BC. The Middle Assyrian Empire was Assyria’s first period of ascendancy as an empire.
1099 BCE776 BCEGreek Dark Ages

The Greek Dark Ages is the period of Greek history from the end of the Mycenaean palatial civilization, around 1100 BC, to the beginning of the Archaic age, around 750 BC. Archaeological evidence shows a widespread collapse of Bronze Age civilization in the Eastern Mediterranean world at the outset of the period, as the great palaces and cities of the Mycenaeans were destroyed or abandoned. At about the same time, the Hittite civilization suffered serious disruption, as cities from Troy to Gaza were destroyed. In Egypt, the New Kingdom fell into disarray.
967 BCE609 BCENeo-Assyrian Period

The Neo-Assyrian Empire was the fourth and penultimate stage of ancient Assyrian history and the final and greatest phase of Assyria as an independent state. Beginning with the accession of Adad-nirari II in 911 BC, the Neo-Assyrian Empire grew to dominate the ancient Near East throughout much of the 8th and 7th centuries BC, becoming the largest empire in history up to that point. Because of its geopolitical dominance and ideology based in world domination, the Neo-Assyrian Empire is by many researchers regarded to have been the first world empire in history. At its height, the empire was the strongest military power in the world and ruled over all of Mesopotamia, the Levant and Egypt, as well as portions of Anatolia, Arabia and modern-day Iran and Armenia.
825 BCE146 BCECarthage

Carthage was the capital city of Ancient Carthage, on the eastern side of the Lake of Tunis in what is now Tunisia. Carthage was one of the most important trading hubs of the Ancient Mediterranean and one of the most affluent cities of the classical world.
775 BCE505 BCEArchaic Period (Ancient Greece)

Archaic Greece was the period in Greek history lasting from circa 800 BC to the second Persian invasion of Greece in 480 BC, following the Greek Dark Ages and succeeded by the Classical period. In the archaic period, Greeks settled across the Mediterranean and the Black Seas, as far as Marseille in the west and Trapezus (Trebizond) in the east; and by the end of the archaic period, they were part of a trade network that spanned the entire Mediterranean.
753 BCE28 BCERome

The history of Rome includes the history of the city of Rome as well as the civilisation of ancient Rome. Roman history has been influential on the modern world, especially in the history of the Catholic Church, and Roman law has influenced many modern legal systems. According to legend, Romulus founded Rome.
608 BCE539 BCENeo-Babylonian Empire

The Neo-Babylonian Empire or Second Babylonian Empire, historically known as the Chaldean Empire, was the last polity ruled by monarchs native to Mesopotamia. Beginning with the coronation of Nabopolassar as the King of Babylon in 626 BC and being firmly established through the fall of the Neo-Assyrian Empire in 612 BC, the Neo-Babylonian Empire was conquered by the Achaemenid Persian Empire in 539 BC, marking the collapse of the Chaldean dynasty less than a century after its founding.
550 BCE330 BCEAchaemenid Empire

The Achaemenid Empire or Achaemenian Empire (/əˈkiːmənɪd/; Old Persian: 𐎧𐏁𐏂, Xšāça, lit. ‘The Empire’ or ‘The Kingdom’), also called the First Persian Empire, was an ancient Iranian empire founded by Cyrus the Great in 550 BC. Based in Western Asia, it was contemporarily the largest empire in history, spanning a total of 5.5 million square kilometres (2.1 million square miles) from the Balkans and Egypt in the west to Central Asia and the Indus Valley in the east.
499 BCE449 BCEPersian Wars

The Greco-Persian Wars (also often called the Persian Wars) were a series of conflicts between the Achaemenid Empire and Greek city-states that started in 499 BC and lasted until 449 BC. The collision between the fractious political world of the Greeks and the enormous empire of the Persians began when Cyrus the Great conquered the Greek-inhabited region of Ionia in 547 BC. Struggling to control the independent-minded cities of Ionia, the Persians appointed tyrants to rule each of them. This would prove to be the source of much trouble for the Greeks and Persians alike.
461 BCE405 BCEPeloponnesian Wars

The Peloponnesian War (431–404 BC) was an ancient Greek war fought between Athens and Sparta and their respective allies for the hegemony of the Greek world. The war remained undecided for a long time until the decisive intervention of the Persian Empire in support of Sparta. Led by Lysander, the Spartan fleet built with Persian subsidies finally defeated Athens and started a period of Spartan hegemony over Greece.
334 BCE323 BCEAlexander the Great

Alexander III of Macedon, commonly known as Alexander the Great, was a king of the ancient Greek kingdom of Macedon. He succeeded his father Philip II to the throne in 336 BC at the age of 20, and spent most of his ruling years conducting a lengthy military campaign throughout Western Asia and Egypt. By the age of thirty, he had created one of the largest empires in history, stretching from Greece to northwestern India. He was undefeated in battle and is widely considered to be one of history’s greatest and most successful military commanders
248 BCE226 CEParthian Empire

The Parthian Empire, also known as the Arsacid Empire, was a major Iranian political and cultural power in ancient Iran from 247 BC to 224 AD. The empire, located on the Silk Road trade route between the Roman Empire in the Mediterranean Basin and the Han dynasty of China, became a center of trade and commerce.
27 BCE476 CERoman Empire

The Roman Empire was the post-Republican period of ancient Rome. As a polity, it included large territorial holdings around the Mediterranean Sea in Europe, North Africa, and Western Asia, and was ruled by emperors. From the accession of Caesar Augustus as the first Roman emperor to the military anarchy of the 3rd century, it was a principate with Italia as the metropole of its provinces and the city of Rome as its sole capital.
227 BCE651 CESassanid Empire

The Sassanid Empire, officially known as the Empire of Iranians and also referred to by historians as the Neo-Persian Empire, was the last Iranian empire before the early Muslim conquests of the 7th-8th centuries AD. Named after the House of Sasan, it endured for over four centuries, from 224 to 651 AD, making it the longest-lived Persian imperial dynasty. The Sasanian Empire succeeded the Parthian Empire, and re-established the Persians as a major power in late antiquity alongside its neighbouring arch-rival, the Roman Empire (after 395 the Byzantine Empire).

Middle Ages (476 – 1492)

233 CE476 CEMigration Period / Barbarian Invasions

The migration period was a period in European history marked by large-scale migrations that saw the fall of the Western Roman Empire and subsequent settlement of its former territories by various tribes, notably the Franks, Goths, Alemanni, Alans, Huns, early Slavs, Pannonian Avars, Magyars, and Bulgars within or into the former Western Empire and Eastern Europe.

The barbarian kingdoms were the states founded by various non-Roman, primarily Germanic, peoples in Western Europe and North Africa following the collapse of the Western Roman Empire in the fifth century.
396 CE1453 CEByzantium Empire

The Byzantine Empire, also referred to as the Eastern Roman Empire or Byzantium, was the continuation of the Roman Empire in its eastern provinces during Late Antiquity and the Middle Ages, when its capital city was Constantinople (present-day Istanbul).
7111492Spanish Reconquista
7931066Viking expansion
9621806Holy Roman Empire
12711295Marco Polo
13371453Hundred Years’ War
13621450Timurid Empire
14871522Age of Discovery
13461353Black Death

Early Modern Period (1492 – 1789)

15171648Protestant Reformation and Counter-Reformation
14871975Portuguese Empire
14921898Spanish Empire
15551980French colonial empire
15681648Eighty Years’ War
16071980British Empire
16181648Thirty Years’ War
16191975Dutch Empire
17751783American Revolution
15851604Anglo-Spanish War

Modern & Contemporary Period (1789 – 2013)

17891799French Revolution
18031815Napoleonic Wars
18091829Spanish American independence
18461848Mexican-American War
18611865American civil war
18701871Franco-Prussian War
19141918World War I
19171917Russian Revolution
19361939Spanish Civil War
19391945World War II
19451991Cold war
19221990Africa – Decolonisation
19482005Arab–Israeli conflict

Map of the World from 3000 BCE to 2013 CE

To view details within a map, click “View 4K map” to open the map at full size (3840 x 2160 px), preferably on a large, maybe 32″, 4K monitor.

View 4K Map
View 4K Map
View 4K Map
View 4K Map
View 4K Map
View 4K Map
View 4K Map
View 4K Map
View 4K Map
View 4K Map
View 4K Map
View 4K Map
View 4K Map
View 4K Map
View 4K Map
View 4K Map
View 4K Map
View 4K Map
View 4K Map
View 4K Map
View 4K Map
View 4K Map
View 4K Map
View 4K Map
View 4K Map
View 4K Map
View 4K Map
View 4K Map
View 4K Map
View 4K Map
View 4K Map
View 4K Map
View 4K Map
View 4K Map
View 4K Map
View 4K Map
View 4K Map
View 4K Map
View 4K Map
View 4K Map
View 4K Map
View 4K Map
View 4K Map
View 4K Map
View 4K Map
View 4K Map

A Selection of Useful Reports in Google Analytics

Having a website without a reporting tool like Google Analytics (GA) is like flying blind. The data available is very useful, if not critical, in making business decisions. Yet, it surprises me how many people continue to make website changes based on pure assumption and without considering user behavior and traffic data at all. Following are some reports in Google Analytics that are interesting and useful that can be be used to make data-driven decisions about website changes.

Audience > Geo > Language

Knowing what language your users speak can help you make a decision on which languages you should have your website in. GA gets language data from a user’s browser which are in specific language-country codes. en-US is English-US, en-gb is English-Great Britain, en-ca is English-Canada, and so on. In the screenshot below, we see that most users have their browser language set to some variant of English, but some (1.05%) have it set to zh-cn (Chinese-People’s Republic of China), de-de (German-Germany), and fr-fr (French-France).

Audience > Geo > Country

Google Analytics tracks user location based on their IP address. It’s always interesting to see where your website visitors are viewing your site from. In the screenshot below, almost 8% of website visitors are in India yet, compared to the language report above, hi-IN (Hindi-India) wasn’t in the list. I guess people in India set their browser language to English (en).

Audience > Behavior > New vs Returning

This report compares how many visitors are new versus returning. If many people are returning visitors to your website, then the website must have a lot of interesting content that makes them want to keep returning.

Audience > Behavior > Frequency & Recency


If you click the “Count of Sessions” distribution, you will see how frequent the same individual visits your site in a given time period. For example, in the report below, 720 people visited the website 3 times (e.g. once a week over 3 weeks).

If you click the “Days Since Last Session” distribution, you will see how long it’s been since your visitors last came to your site in a given time period. For example, in the report below, it has been 2 days since 223 people last visited the website.


Audience > Behavior > Engagement

Session Duration Bucket

This report tells you how many visitor sessions are within a particular duration. For example, in the report below, there were 1204 visitor sessions that lasted between 601 and 800 seconds.

Page Depth

This report tells you the number of sessions where the page depth (number of pages visited) was 1, 2, etc. In the report below, there were 678 sessions where the visitors visited 3 pages during their session.

Audience > Technology > Browser & OS


In this report, you can see what percentage of users use a particular browser. In the report below, more than 50% of users use Chrome. So, if your website has a feature that is broken in Chrome, you should fix it. We also see that 0.58% of visitors use the Opera browser. So, if your website doesn’t work in Opera, who cares. Well, 0.58% of your visitors might care but so what.

Operating System

In this report, you can see what percentage of your visitors use a particular operating system. In the report below, the majority of visitors (30.41%) visit the website on iOS.

Screen Resolution

In this report, you can see what percentage of your visitors view your website at a particular screen resolution. In the report below, we see that 10.88% of people view the website on desktop at a resolution of 1920×1080. Many others view the site at screen widths below 500px. This means they are probably viewing the site on their phones. Notice how the smallest screen resolution is 360×800. In this case, you would want to ensure the mobile version of your site looks good at a width of 360 px.

Audience > Mobile > Overview

Device Category

In this report, we can see what percentage of people are visiting your site on mobile, desktop and tablet. In the report below, very few people (1.63%) view the site on tablet so ensuring the site looks good on tablet isn’t particularly important. However, the majority of visitors visit the site on mobile so it’s important to ensure the site looks good on mobile.

Audience > Mobile > Devices

In this report, we can see what percentage of people visit your site on a particular device (iPhone, iPad, etc). In the report below, more than 50% of the website visitors visit the site on mobile using an Apple iPhone.

Audience > Users Flow

In this report, you can see how people flow through your site. The first column is the primary dimension. In the report below, the primary dimension is “Country”.

Of the 17K sessions from the US, 1.6K land (start) on the home page, and from there, they go to some other pages shown in the 1st Interaction column.

If we click another band, we can see that of the 17K visitors from the US, 1.7K land (start) on the blog post about grilling corn using a Ninja Foodi grill.

You can also change the primary dimension to something else like “Landing Page”.

Acquisition > All Traffic > Channels

In this report, we can see what percentage of users visit the site from different channels (organic search, direct, social, etc). In the report below, 77.24% of visitors find the site from organic search, e.g. searching from Google.

If you click “Organic Search”, you’ll see another report like the one below. The default primary dimension is keyword. Almost all of the keywords used to find the site in a search engine have value of “(not provided)” or “(not set)”. Obviously, this is incorrect because people must have searched for something to find the site in Google. The reason why it says “not provided” or “not set” is because Google decided to hide this keyword data to protect users’ privacy.

If you click on the “Source” primary dimension, you can compare visits by search engine. In the report below, clearly, the majority of visitors found the site from Google.

Acquisition > All Traffic > Source/Medium

Sometimes, it’s more helpful to see how people are finding your website by a combination of source and medium as shown in the screenshot below.

Behavior > Behavior Flow

This report is similar to the Users Flow report mentioned above. You can see how people flow / traverse through your website as they click from one page to another.

Behavior > Site Content >All Pages

When the primary dimension is set to “Page” (default), in this report you can see traffic and behavior by page, e.g. how many pageviews, unique pageviews, average time on page, entrances, bounce rate, and % exit a particular page got. This report clearly tells you your most visited pages.

Secondary Dimension

The secondary dimension option allows you to see reports in other ways. This is extremely useful. For example, let’s say you have a registration page and you want to promote it by linking to it from many places, both internally on the same website, e.g. on your home page or a product page, and externally on other websites.

Internal referrals

To find which pages on your website are generating traffic directly to a particular page on your website, first, type part of the page URL in the filter field and click the search button. This will filter out all other pages and only show the specific page you are interested in

Then, in the secondary dimension dropdown, choose Behavior > Previous Page Path.

Now, in the resulting report (below), we can see that for the specific page we’re interested in, we find that 88% of people landing on that page (entered it from some other website like from Google search results). 0.6% got to that page from the home page and another 0.18% got to it from the About page.

External referrals

To find how people got to that page from an external source, change the secondary dimension to Acquisition > Source / Medium.

Now we see that 76% came from Google organic search results and 20% directly, e.g. they typed the URL in from somewhere or clicked a link in an email.

Next Page Path

What if we want to know what pages people are getting to from, say, the home page? If we change the filter to just “/” (the home page) and set the secondary dimension to “Next page path”, we see the following report.

The report above looks wrong because it says that 100% of visitors went from the home page to the home page (next page). To find out the correct next pages, click the Navigation Summary tab.

Now we can see what pages people came from before hitting the home page and what pages people went to after hitting the home page.

There are many other secondary dimensions so it’s worth spending time browsing the different types of reports you can get from other dimensions. For example, you can see how many people visited a specific page by country.

Behavior > Site Content >Content Drilldown

In this report, you can see pageviews (and other data) by folder structure (URL structure). For example, in the report below, there were 21,503 pageviews of pages in the 2019 folder (blog posts published in 2019).

If you click a folder like /2019/, you can drill down to subfolders. In the report below, the subfolders are numbers indicating months. For example, in the report below, there were 18,267 pageviews to pages in /2019/09/.

Behavior > Site Content >Landing Pages

This report is similar to the one under Behavior > Site Content > All Pages, but this one is specifically for landing pages, i.e., the pages through which visitors entered your site. You can think of “landing pages” as “entrance pages”.

Behavior > Site Content >Exit Pages

Opposite of landing pages is exit pages, i.e. pages from which people exited your site.

Behavior > Site Speed > Overview

In this report, you can see how fast your website loads on average by browser, country, and page. Of course, you want your website to load as fast as possible. In the report below, we see that the average page load time is 5.78 seconds. Interestingly, the average page load time in Chrome is much higher (7.15 sec) compared to Safari (3.33 sec).

If we look at the average page load time by country, we see that the website loads the fastest (1.53 sec) from Slovenia for some reason.

Behavior > Site Speed > Page Timings

In this report, we can compare the average page load time of individual pages against the site average page load speed. This is helpful to find specific pages that aren’t performing well, e.g. the one with the red bar in the screenshot below.

Using Cypress Tress to Hide Ugly Views of Your Neighbors

One of my properties is in an HOA. Though many people dislike HOAs and having to pay a monthly HOA fee, one huge benefit of being in an HOA is you never have to deal with unsightly views from the street. If someone violates the CC&Rs, they are fined and forced to stop. This improves everyone’s curb appeal including the neighborhood as a whole. For me, and many others, that’s valuable. But, my other properties are not in an HOA. And, unfortunately, people have very different ideas of what looks good. One neighbor put down pavers himself but was either lazy or didn’t know how to do it right. As a result, the pavers are uneven and weeds are growing everywhere. Another neighbor beheaded their tree leaving a 5′-tall trunk in the middle of their front yard surrounded by probably one of the cheapest rocks you can find – gray gravel. This is bad, but it’s nothing compared to another property of mine where one immediate neighbor is a mechanic who works on cars in his driveway almost 24/7. The neighboring property is a triplex owned by a slumlord who doesn’t appear to care one bit that her ghetto tenants are destroying her property as long as she collects the very low rent that she can get. Their lawn is destroyed because sometimes they park their cars on it. Their garbage bins are always overflowing and are a fly magnet. And if that’s not enough, the other immediate neighbor covered their lawn that meets my property line with concrete and illegally parks a beat-up pickup truck on it. They also leave a grill, used car parts, engine oil, and various other garbage along their side of the property line. As a result, no matter how much I improve my property, being sandwiched between two ugly neighbors significantly ruins my property’s curb appeal. Reporting code violations to the City is useless as they never do anything. Putting up a fence helps but the municipal code limits how tall they can be. Fortunately, there is no height limit on trees as there are 2 and even 3-story-tall trees in nearby front yards. So, one solution I decided on to block the unsightly neighbors is by creating a fence made up of Cypress trees. These trees are super low maintenance, evergreen, the leaves don’t fall and create a mess that you have to clean up all the time, and they grow in a very predictable manner (straight up) so you don’t need to worry about stray branches hitting your eaves or roof.

I bought the 5-gallon trees from a nearby nursery for $75 each. In Spring, you can get them at Costco for $40. You can rent a flatbed pickup truck from the Home Depot for $19 for 75 minutes. These trucks are ideal because you can lower the tailgate and the sides as well, making the loading and unloading of trees, or anything for that matter, much easier.

Along the east-facing fence, I had to dig holes in a section where there was no concrete. Digging holes is a PITA for sure. But, using the right tools like a gas-powered auger makes it less of a PITA. In the photo below, I made a square hole by making 4 small holes at each corner using the auger, then another hole in the middle, and then removed the remaining dirt.

Along the west-facing fence, I had previously poured concrete so I had to cut squares in it for the trees to go in. After backfilling with dirt, I covered the dirt with cement board to be used as weed fabric (regular weed fabric is useless), and then poured a layer of ginger rock.

Here’s how the west side looks. The fence boards are red-stained and cost about $3 each from Home Depot. I ran a 1/2″-diameter tube from the back of the building for irrigation. Connected to that tube are smaller tubes for drip irrigation directly at the root of each tree. The photo below is from before the concrete was pressure washed.

Here’s how the east side looks. You can still see the junk cars next door but after these trees grow tall and thick, my tenants will be shielded from the unsightly views next door and the curb appeal will continue to improve and there will be a clear delineation between my property and the neighboring ugliness.

I continued the fence/tree design alone much of the east side to block as much of the neighbors as possible.

Within 5 years, the trees will be as tall as the 2-story buildings and have a much wider diameter.

So there you have it. One way to block trashy neighbors while not violating most municipal codes.

Toyota Prius Prime VS Tesla Model 3

This post will compare various aspects of a 2019 Toyota Prius Prime to a Tesla Model 3 in California. It assumes the buyer has a credit score of 870 and can get financing for 72 months (6 years) at 4.6%.

2019 Toyota Prius Plus Hatchback 4D
2019 Telsa Standard Range
Plus Sedan 4D


  • The total purchase price including interest for the Tesla is $16,875 more than for the Prius.
  • For insurance, the Tesla will cost about $50 to $100 more per month than the Prius.
  • The Tesla can only go 220 miles before needing to be recharged whereas the Prius can go 640 miles on one full battery and small 11.4-gallon tank of gas.
Prius (Plug-in Hybrid)Telsa (EV)
TrimPlus Hatchback 4DStandard Range
Plus Sedan 4D
KBB Private Party Value$32,153$45,416
Tax (11%)$3536$4995
Out-the-door Price$35,689$50,411
Down Payment$10,000$10,000
Financing Monthly Payment$408.97$643.34
Total Loan Interest$3,756$5,909
Total Cost with Interest$39,445$56,320
Monthly Insurance
(Full Coverage, $1K Deductible)
Mercury: $146
21st Century: $155
Mercury: $280
21st Century: $209
Must change oil, belt, and filterYesNo
Must check smogYes (after 8 years)No
Tire Size (larger tires cost more)15″18″
Driving Range (Gas + Electricity)640 miles0 miles
Driving Range (Electricity Only)25 miles220 miles
Cost to drive 25 miles$0.81 (electric only)$0.83
EPA Fuel Economy133 MPGe (electric + gas)
54 MPG (gas only)
131 MPGe (electric)

Different Ways to Prep a Concrete Floor to Accept Paint or Epoxy

Concrete in your home is everywhere. From your driveway, garage floor, patio, porch, and backyard, everyone has concrete. Unfortunately, concrete is porous and can easily get dirty. Oil, dirt, and stains from all sorts of things can permeate and discolor concrete seemingly permanently. Pressure washing concrete with a high-pressure washer won’t even remove the discoloration. To protect your concrete from stains, you’ll need to seal it. If your concrete is already ugly or if you want to change the way it looks, you’ll need to apply a coating on it, e.g. epoxy. But, in order for any coating to adhere and not peel off, you’ll need to prepare (prep) the surface very well. This is the most important step when renovating concrete. Do it right, and you’ll vastly improve and transform the look of your concrete and your home. Here’s an example before and after picture of a garage floor I renovated.

This is not the step where you want to be lackadaisical. Following are different ways you can prep your concrete surfaces.


You can pour acid on bare concrete and scrub it around. However, the chemicals are toxic, smelly, and harmful.

Floor Polisher with Diamabrush Concrete Prep Attachment

The concrete prep attachment is for etching bare concrete floors to prepare for adhesive coatings. This option is much better than using acid, IMHO. But, it’s a bit more expensive. I think I rented it for $140 for 4 hours from the Home Depot. It’s a bit tiring to use because the polisher likes to move in one direction so you need to force it to go in the other direction.

Floor polisher
Diamabrush concrete prep attachment

Make sure you choose the concrete prep attachment and not the coating removal attachment picture below. Both look similar but the latter is for removal of mastics, glue, adhesives, thinset epoxies and paint from interior concrete.

Diamabrush coating removal attachment

Angle Grinder with Concrete Grinder Attachment and Dush Shroud

Another option is to grind the concrete down. This, however, requires getting down on the ground and can take a long time. You’ll also need to use a shopvac to suction the dust as this will product a ton of dust. Concrete dust is harmful because it contains silica which can mess with your lungs. If you have a small area to grind or if you need to grind edges, this tool is handy.

Walk-Behind Concrete Grinder

This commercial-grade concrete grinder can be rented at the Home Depot. It grinds down concrete high spots, removes sealers and thin mil paints, removes mastics and preps floors to accept new coatings.

This tool should also be used with a concrete grinder dust vacuum.

Shot Blaster

This tool can be rented from Sunbelt Rentals for $270 / day. This tool works by blasting media (shot) at the concrete to scour the surface. This is one of the best ways to prepare concrete. However, what’s annoying about it is you have to periodically pick up the shot media that escapes the tool.

Dustless Blasting

You can hire a company, like this one in Stockton, California, to prep your concrete for you. This tool uses a combination of water and shot media.

Active Ingredients for Common Illnesses

With so many over-the-counter medicine options to choose from, it can be confusing to know which one to get. Then there’s the brand name medicine versus the generic or store brand medicine. What only really matters is the “active ingredients”. This post will list and describe the active ingredients for common illnesses so you can make better decisions when deciding which medicine to buy.

Tip: Always buy store-brand medicine, e.g. Target’s Up & Up or Costco Kirkland brands. They contain the same active ingredients and are always cheaper.

Cough Suppressant

Generic name: Dextromethorphan HBr

Common brands: Robitussen

Generic name: Eucalyptus Oil (topical)

Common brands: Vicks VapoRub


Generic name: Guaifenesin

Common brands: Robitussen

An expectorant is a medicine you can use when you have a cough that produces mucus. Expectorants help thin the secretions in your airway and loosen up mucus, so you can make your cough more productive.

Allergy Symptom Reliever

Generic name: Fluticasone Propionate (glucocorticoid)

Common brands: Flonase, Aller-Flo (Costco Kirkland)

Temporarily relieves symptoms of hay fever or other upper respiratory allergies including nasal congestion, itchy nose, runny nose, sneezing, and itchy, watery eyes

Generic name: Cetirizine HCI (Antihistimine)

Common brands: Zyrtec, Aller-Tec (Costco Kirkland)

Temporarily relieves symptoms of hay fever or other upper respiratory allergies including runny nose, sneezing, and itchy, watery eyes, itching of the nose or throat

Generic name: Loratadine (Antihistimine)

Common brands: Claritin

Temporarily Relieves These Symptoms Due To Hay Fever Or Other Upper Respiratory Allergies: Runny Nose, Sneezing, Itchy, Watery Eyes, Itching Of The Nose Or Throat

Generic name: Mometasone Furoate Monohydrate (Glucocorticoid)

Common brands: Nasonex

Uses temporarily relieves these symptoms of hay fever or other upper respiratory allergies: nasal congestion runny nose sneezing itchy nose

Generic name: Fexofenadine Hci

Common brands: Allegra

Temporarily relieves these symptoms due to hay fever or other upper respiratory allergies: – runny nose itchy, watery eyes sneezing – itching of the nose or throat

Generic name: Triamcinolone Acetonide

Common brands: Nasacort

Temporarily relieves these symptoms of hay fever or other upper respiratory allergies: nasal congestion runny nose sneezing itchy nose

Generic name: Azelastine Hci (Antihistamine)

Common brands: Astepro

Generic name: Diphenhydramine Hcl (Antihistamine)

Common brands: Benadryl

Nasal congestion, runny nose, sneezing, itchy nose

Temporarily Relieves These Symptoms Due To Hay Fever Or Other Upper Respiratory Allergies: Runny Nose Sneezing Itchy, Watery Eyes Itching Of The Nose Or Throat

Generic name: Levocetirizine Dihydrochloride (Antihistamine)

Common brands: Xyzal

Temporarily relieves these symptoms due to hay fever or other respiratory allergies: runny nose itchy, watery eyes sneezing itching of the nose or throat

Generic name: Triprolidine Hcl (Antihistamine)

Common brands: Mucinex

Triprolidine is an antihistamine used to relieve symptoms of allergy, hay fever, and the common cold. These symptoms include rash, watery eyes, itchy eyes/nose/throat/skin, cough, runny nose, and sneezing.

Generic name: Chlorpheniramine Maleate (Antihistamine)

Chlorpheniramine is an antihistamine used to relieve symptoms of allergy, hay fever, and the common cold. These symptoms include rash, watery eyes, itchy eyes/nose/throat/skin, cough, runny nose, and sneezing.

Generic name: Doxylamine Succinate (Antihistamine)

Doxylamine is an antihistamine, used to relieve symptoms of allergy, hay fever, and the common cold. This medication works by blocking certain natural substances (histamine, acetylcholine) that your body makes. This effect helps to relieve allergy/cold symptoms such as watery eyes, runny nose, and sneezing.

Generic name: Brompheniramine Maleate (Antihistamine)

Common brands: Dimetapp

Used to relieve watery eyes, itchy eyes/nose/throat, runny nose, and sneezing.

Pain Reliever / Fever Reducer

Generic name: Acetaminophen

Common brands: Tylenol

Relieves mild to moderate pain (from headaches, menstrual periods, toothaches, backaches, osteoarthritis, or cold/flu aches and pains) and to reduce fever.

Generic name: Ibuprofen

Common brands: Advil

Relieves pain from various conditions such as headache, dental pain, menstrual cramps, muscle aches, or arthritis. It is also used to reduce fever and to relieve minor aches and pain due to the common cold or flu.

Generic name: Aspirin

Used to reduce the risk of having a heart attack in people who have heart disease.

Generic name: Naproxen Sodium

Common brands: Aleve, Anaprox, Naprosyn

Used to relieve pain from various conditions such as headache, muscle aches, tendonitis, dental pain, and menstrual cramps. It also reduces pain, swelling, and joint stiffness caused by arthritisbursitis, and gout attacks.

Nasal Decongestant

Generic name: Phenylephrine Hcl, Phenylephrine Bitartrate

Common brands: Sudafed PE

Generic name: Oxymetazoline Hydrochloride

Common brands: Mucinex Sinus-Max, Afrin

Sore Throat, Sore Mouth, Canker Sores

Generic name: Benzocaine, Menthol

Common brands: Mucinex

Gargle with salt water

Form Backends for Static Websites

If you’re getting on the Jamstack bandwagon, you’ll probably get to a point where you need to figure out a way to handle web forms. That’s what happened to me when I migrated from WordPress (PHP) to static HTML. I needed a way to handle my contact form. Fortunately, there are many form backend services like

After reviewing each one, I find KwesForms to be the best, but to have one of the worst costs because it’s one of the most expensive.

At $29 / month, that’s cheap for a company but more than I would want to pay for a personal blog. There is a free version but it has some limitations and has the KwesForms logo on confirmation emails. Anyway, KwesForms has the best features, what super easy to integrate, includes form validation, custom redirects, clear documentation, and more. You can view and edit form data and export it all as a CSV file.

Since I don’t want to pay $29 / month for a contact form, and since I’ll be hosting my new blog on Netlify, I’m just going to use Netlify Forms. It’s not as user-friendly and feature-packed as KwesForms, which is to be expected since Netlify specializes in static site hosting, not form handling, but it’s free (up to 100 submissions per month). However, unlike KwesFroms, which comes with form validation, I’ll have to add my write my own form validation code. Instead of reinvent the wheel, I’ll use .validate, a jQuery validation plugin.

As you can see from their website and the video below, it’s dead simple to use.

Website Speed Comparison: WordPress (PHP) on GoDaddy vs Static HTML on Netlify

I’m in the process of migrating this blog from a managed WordPress instance on GoDaddy to a static HTML site on Netlify. Before I switch over the domain, I wanted to compare the Google Lighthouse performance scores for each site. In Google Chrome Developer Tools, I clicked the Lighthouse tab and ran a test for each site. Here are the results.

Performance score for WordPress (PHP) version of site on GoDaddy

Performance score for static HTML version of site on Netlify

Now, you might be thinking, why would the PHP site get a slightly higher score than the static HTML site? The static site has a lower cumulative layout shift score (see definition below). This factor has nothing to do with PHP vs HTML or GoDaddy vs Netlify. This factor has to do with how elements on the page shift their position. The original theme in the WordPress site came from one developer and the theme in the static HTML site came from another developer who recreated the original theme. This tells me that the original theme was coded better than the recreated theme. Since I’m more concerned with speed rather than layout shift, we can see that the static HTML site on Netlify is much faster than the PHP site on GoDaddy. This is to be expected. If we add up all scores except for the Cumulative Layout Shift score, we get

  • PHP on GoDaddy Performance Score: 3.9 s
  • HTML on Netlify Performance Score: 1.3 s

The new site performs 3x faster than the old one! That’s a speed gain of 300%!

First Contentful Paint

First Contentful Paint marks the time at which the first text or image is painted. Learn more.

Time to Interactive

Time to interactive is the amount of time it takes for the page to become fully interactive. Learn more.

Speed Index

Speed Index shows how quickly the contents of a page are visibly populated. Learn more.

Total Blocking Time

Sum of all time periods between FCP and Time to Interactive, when task length exceeded 50ms, expressed in milliseconds. Learn more.

Largest Contentful Paint

Largest Contentful Paint marks the time at which the largest text or image is painted. Learn more

Cumulative Layout Shift

Cumulative Layout Shift measures the movement of visible elements within the viewport. Learn more.

Virtually Stage a Room

I just finished renovating one of my rental apartments. I took a bunch of photos and, though the apartment looks nice, it looks extremely plain and uninviting without furniture. Some people have a good imagination and sense of design and can visualize what a room could look like with furniture the right furniture, but most people are clueless when it comes to interior design. I definitely don’t want to spend a lot of time, money, and energy paying a professional stager to come and bring real furniture to my apartment. Fortunately, there are online services where you can pay companies (or individuals) to virtually stage photos of your rooms for you. Or, you can use one of many DIY websites where you can virtually stage your rooms yourself.

After doing some research, I came across Apply Design. They charge up to $10 per photo. You can try it for free on one photo. So, I gave it a try and here’s what I came up with.

Living Room When Occupied by Tenant

The photo is distorted because I used a 360-degree camera placed in the center of the room. To show more of the room, I had to zoom out which made the walls look wider or narrower.

Living Room Right After I Kicked Out My Inherited Tenant

Again, the photo above is distorted.

Living Room After Renovating It

The photo above is the one I uploaded to Apply Design.

Virtually Staged Photo (Before Rendering)

This is how the living room looked after I drag and dropped furniture and design elements onto the previous photo but before rending the objects.

Virtually Staged Photo (After Rendering)

This is the final, rendered version of the photos. As you can see, it not only looks realistic, but it looks way more attractive and inviting than the empty room. When you compare it to the pre-rendered version, you see much more detail, shadows and vibrant colors.

How it Works

Virtually staging a room is actually very easy. Here are the steps using Apply Design.

  1. Upload photos
    Apply Design will take a few minutes to analyze each photo. I think it’s trying to determine where the walls are and the depth of field.
  2. Drag furniture and interior elements
    You can search or browse for furniture and then drag them to your photo. You can edit each object by moving, resizing, rotating, etc.
  3. Render a photo
    Rendering a photo takes around 5-10 minutes.

Overall, I think this is a great way to improve your home sale or rental potential.

Other Examples

Bedroom when occupied by tenants
Bedroom after (necessarily) renovating it
Bedroom after virtually staging it
Master bedroom when occupied by tenants
Master bedroom after (necessarily) renovating it
Master bedroom after virtually staging it
After virtual staging