Why things sometimes take a long time
Added 2019-02-19 15:01:01 +0000 UTCTake a good look at this screenshot. How long do you think it would take to put that together? Maybe 15 minutes, tops...right?

Wrong!
Here's all the things that happened when I tried to build this:
1. Create the "pill" component. This gives me a reusable chunk of code that I can pass an icon, text, and a color to.
2. Realize that I also need a "pill group" component that lets me neatly stack multiple pills next to each other that also wraps. Create this component.
3. Realize I don't have property information normalized from ecobee thermostats. Write a function that looks at data from ecobee, checks for errors, then stores it. As an example, I had to use regular expressions to match all of the different forms of "Detached" that ecobee has in their database as it's not consistent.
4. Realize I don't have region information normalized from ecobee thermostats. Start writing a function to try and do that.
5. Realize that this isn't going to work. The data is far too inconsistent and normalizing international addresses is incredibly complex. I need some way to convert all the different versions of cities, states, and countries in the database into something standardized. Start looking for a service that can do this for free or cheap. (Note: For display purposes this isn't important to do, but since I will be doing regional comparisons I felt it was critical).
6. Implement the API for selected service (Smarty Streets) and work through all the caching and error handling associated with that. Hooray, normalized address info!
7. Wonder if I made the right decision by relying on a third party service. Check uptime, verify pricing, etc. Ultimately decide that the source data is just not high enough quality to use accurately and proceed.
8. Look at the time. It's midnight and I have to function tomorrow. Go to sleep.
9. Look at the ecobee data for system type. Realize I'll have to detect that based on a number of thermostat settings because it's not explicitly stored. Wonder how I'll figure it out...
Anyways, you get the idea. This is the process I go through when building these sections of beestat. I take one small chunk and just start hammering through things bit by bit. This particular example is completely real and took a good amount of time to go through. The result of the diligence is a very robust application that is very accurate, polished, and generally fee of problems.
Sometimes it reminds me of this.

Of course, not every thing is this complex. Sometimes I already have all the data I need and it's as simple as building out a couple components and doing a bit of styling. Those things go quick.
To all my $5 backers, look for a beta to be available in about two weeks!
As a bonus, here's a screenshot of the screen that allows you to change your system type if the detected type is wrong. Most of this week went into researching that, then developing all of the features related to it.
