Chris X Edwards

When my software has weird bugs because of floating point encoding, the blame really lies with my math education as a kid. Fixing it slowly.
2024-03-16 10:49
Real bank security posture shouldn't send statements with 7 small opaque (to me) QR codes with the redundancy to defy shredding. @BofA_Help
2024-03-05 14:15
I can only smile like ad models in stock photos at the disconnect between their reaction to, say, car financing and the real experience.
2024-03-05 13:13
How gauche my USA neighbors think clothes hanging on a line looks is exactly how gauche clothes look hanging on them.
2024-02-23 12:41
The last group of people on earth who deserve an honorific holiday are American presidents.
2024-02-19 20:08
Blah Blah
--------------------------

Review - Cassell's Latin-English Dictionary

2024-03-28 18:33

I like hobbies that are unusual and challenging, generally to the point where normal people can no longer really comprehend the experience as sane. When it comes to reading I’ve been known to tackle challenging books. Despite reading most every day, this winter I managed to get through only half of one book. That book was Cassell’s 1959 Latin-English Dictionary.

I can’t say cover to cover because I stopped at the English-Latin section. The entire book has 928 pages and early on I thought it would be a reasonable challenge to read half that. Only as the P’s dragged on past the halfway mark did I realize that for some reason, the Latin-English pages outnumbered the English-Latin by two to one (628/300). This was physically a hard book to read too. My eyesight is no longer as good as human eyesight can possibly be but for my age it’s still not bad and I usually do not wear glasses when reading. With this book however, the font size was microscopic and the alien nature of the content and Latin example citations made reading glasses essential. The (ironically named) italic font, greek letters, and microscopic symbols throughout were a challenge too.

latin081.jpg

So why would somebody want to do this possibly unpleasant sounding thing? I will start by saying that I did enjoy it. I am glad I did it and consider the experience worthwhile. The first thing to consider is that by reading the entire thing I was treating this dictionary more like a book than a reference. If I need to look up a word in a foreign language computers do a fine job. Consider any book you’ve ever read — if it was more than a few weeks ago, the amount of specific detail you remember is next to nothing. Does that make the value of reading books next to nothing? No. Reading books is a way to really immerse yourself in a topic or story. It allows the neural networks of your mind to become stronger when thinking about the topics or themes. Recalling what some minor character did in a novel you read five years ago is not important. Mostly what you retain about such reading is that, yes, you have read that book and you either liked it or not. Occasionally there are some specific insights so important that you hang onto them too. (For example, it is bad to wake up as a cockroach! Etc.) Suffice it to say, I did not memorize any of this dictionary and I am still a poor replacement for its ordinary purpose.

But, wow, I sure did get a sense of the Latin language! Quickly reading through a simple (phonetic pronunciation) dictionary is one of my recommended techniques to learning the scope and nature of a foreign language. This one was not simple but it definitely served the same purpose of really immersing a learner in the full scope of the language.

latin228.jpg

One interesting example of how reading a Latin dictionary can be helpful in understanding the scope of the language is prefixes. Latin is a heavily inflected language. This means that a core vocabulary is tweaked in small ways to convey complex meaning. For example, Latin (and any modern Romance language) is famous for its inscrutable verb conjugations. But reading all the words in alphabetic order highlights the rich character of the beginning of words too. I didn’t explicitly count, but it seemed to me that most words were in prefix blocks which will mostly be familiar to English speakers. Prefixes like "com-", "con-", "de-", "di-", "ex-", "im-", "in-", "ob-", "par-", "per-", "prae-", "pro-", "re-", "sub-", and "trans-" should look familiar and important to most people speaking any European language. Reading a dictionary really helps you very deeply understand what those prefixes are all about and how they got that way. After seeing dozens of examples of how a prefix is used, you start to feel like you could, uh, re-in-vent some new words using them correctly. We do that and so did Latin speakers.

Ok, so reading a Latin dictionary is possibly helpful in learning about Latin. Great. The bigger question remains, why would you want to do that? If it’s not clear by now, my real goal is not reading ancient texts but rather better understanding my own native language. English is packed with Latin! I like to read Merriam-Webster’s daily Word-Of-The-Day and one day it explicitly stated the following facts.

Many of the words we use in English can be traced to one of two
sources: about one-quarter of our vocabulary can be traced back to
English's Germanic origins, and another two-thirds comes from Latinate
sources (most such words come by way of French or from Latin directly,
but Spanish and Italian have made their contributions as well).

The M-W Word-Of-The-Day is actually a very interesting resource. Let’s look back on the week’s previous words: flout, kismet, megillah, auxiliary, genuflect, pedantic, dragoon.

I do not think that the second and third have anything to do with Latin (Turkish/Arabic, Yiddish/Hebrew). The last four clearly do — my dictionary contains "auxiliator" (helper), "genu" (knee) + "flecto" (flex), "draco" (dragon). This seems unusual to me; I feel that most weeks have an even higher percentage of Latin (see what you think).

The word "pedantic" is an interesting example too. It is not found in this Latin dictionary per se, but it highlights another fascinating aspect of our own language. What does have an entry is paedagogus. This is a bona fide Latin word, just like "pedantic" is an English one. But it is really Greek — "παιδαγωγός". The Romans, who often employed/enslaved Greeks as tutors, borrowed the word pretty much intact. Cassell’s entry defines it as "a slave who accompanied children to and from school and had charge of them at home". That tumbled around through Europe until it got to English in several forms including "pedantic".

That does highlight another deep insight reading this particular dictionary offered: Greek! The Romans liked Greek in the same way Germans like English. They used it all the time! After reading this dictionary, I feel like I can now read Greek words in the Greek alphabet pretty well (my engineering degree — another arduous educational experience — didn’t hurt either). I certainly got an appreciation for how much Greek is in Latin and now in English.

latin266.jpg

There is a reason that despite the fact that my grandmother quit school to work in Leicester’s sock factory at the age of 14, she was actually taught a decent amount of both Latin and Greek. It wasn’t to decode ancient texts but rather to be more exact and expressive with her own native language. Reading a dictionary’s worth of Latin affirms this. Every page was like a month of reading M-W’s Word-Of-The-Day. Every page contained at least one entry where I was amazed by some bit of linguistic trivia. Often it was a deeper understanding of the intricacies of Latin itself which I thought I knew (e.g. "nemo" is nobody, but really is a contraction of "non homo" or "no man"). But mostly I was fascinated at the connection to modern English. For example, the word "schola" (originally from Greek "σχολη") is interestingly defined as "leisure, rest from work; hence learned leisure, learned conversation, debate, dispute, lecture, dissertation." Basically it’s a place where people idly hang out and talk about doing nerdy things like reading a translation dictionary of an ancient language. We have blogs for that kind of thing now!

latin410.jpg

Take a look at these sample pages and see for yourself how much is quite familiar to English speakers.

Round And Round - Round Two

2024-03-14 16:05

If you saw my recent post about rounding I came to the conclusion that the whole topic was very complicated and we should trust that the nerds who create this foundational stuff know what they’re doing and try not to worry about it.

Well, I did my best to not worry about it but after some feedback from my very observant friend Dr. S, I realized that my efforts to not worry about it were not going to hold up. You see, the problem that was brought to my attention was something I had kind of noticed. But I was trying to trust the creators of Python (and C, etc.) and assume they knew how to not let everybody down. But when it was pointed out by someone else, well, yes, my story made no sense.

Basically I was trying to demonstrate that Python does not use a round up strategy to handle values half way between candidate rounded values. Rounding to the higher value was what I was taught in school a young kid. Python documentation hints that it likes to round to even values. Perhaps that’s true when rounding to whole integers. But the examples I chose did not reflect that. I have edited one of the values in that post so that the story makes some sense, but let’s revisit the original flawed values and understand what is really going on and why it could be more important than I first thought.

Here’s the Python version of my previous example.

>>> round(5.775,2); round(5.475,2)
5.78
5.47

Ok, the 5.775 would round up to the $5.78 since 8 is the even possibility. But what about 5.475? I have come to appreciate that the round to even rule is perfectly sensible, and if was in effect wouldn’t we expect to see 5.475 round to $5.48 since again the 8 is even? But it rounds down to the 7. I did kind of notice this but was gaslighted into hazily thinking it must be the preceding digit somehow. Well, that is of course nonsense. This example is simply not following any rule that I’ve discussed. I actually think it is not really following any rounding (tie breaking) rule at all!

After experimenting with rounding well beyond what I was hoping to spend my time on, I never could discern any kind of heuristic that would allow one to predict the outcome. And that is weird. What I’m saying is that a simple sales receipt tax calculation will not be something you can properly predict and that was deeply surprising to me.

But it’s a computer; surely there is some determinism! Surely there is a reason it does what it does. After reading part one some people did have the vague idea this had to do with encoding floating point numbers as binary sequences. Those people were 100% right. I have to say that I was surprised because while I’m quite familiar with the massive can of worms involved in this topic (e.g. IEEE 754) I didn’t think it would apply to the (e.g. dollars and cents) accuracies I was interested in. But that thinking seems to be strangely wrong and naive. Even if the ability to represent (the least accurate type of) floating point numbers is inherently cursed to have some error of say, 3 parts per billion, what does that have to do with pennies in a dollar? Amazingly it matters, and pretty much always.

I wanted a very close look at how float numbers are actually used in C (Python and all the rest seem related). Let’s consider the two numbers 0.513245 and 0.513255. If I want those six digit numbers to start as exactly those values and I then would like them to later be made into 5 digit numbers with rounding, what would be done?

If you’re using the grade school algorithm of always round up when there is a tie, you get this.

0.513245 --> 0.51325
0.513255 --> 0.51326

That’s the easy way to think about it. What if we want to use the round to even heuristic? We should get this.

0.513245 --> 0.51324  (round down because final 4 is even)
0.513255 --> 0.51326  (round up because final 6 is even)

That is not what I observed. It turns out that this explanation does not help us understand anything! What really is happening?

With some helpful help from my robot friends I wrote a C program that really dissects the process by iterating over (some limited range) of all the values of floating point numbers that are possible. I’m basically incrementing my target number by the machine epsilon which is (something like) the smallest value difference that a computer can discern when representing floating point numbers.

Take a look at this table which I explain in detail below.

0.513245 - 0.51324 - 0.513244509696960449218750000000 - 00111111000000110110001111111110
0.513245 - 0.51324 - 0.513244569301605224609375000000 - 00111111000000110110001111111111
0.513245 - 0.51324 - 0.513244628906250000000000000000 - 00111111000000110110010000000000
0.513245 - 0.51324 - 0.513244688510894775390625000000 - 00111111000000110110010000000001
0.513245 - 0.51324 - 0.513244748115539550781250000000 - 00111111000000110110010000000010
0.513245 - 0.51324 - 0.513244807720184326171875000000 - 00111111000000110110010000000011
0.513245 - 0.51324 - 0.513244867324829101562500000000 - 00111111000000110110010000000100
0.513245 - 0.51324 - 0.513244926929473876953125000000 - 00111111000000110110010000000101
0.513245 - 0.51324 - 0.513244986534118652343750000000 - 00111111000000110110010000000110
0.513245 - 0.51325 - 0.513245046138763427734375000000 - 00111111000000110110010000000111
0.513245 - 0.51325 - 0.513245105743408203125000000000 - 00111111000000110110010000001000
0.513245 - 0.51325 - 0.513245165348052978515625000000 - 00111111000000110110010000001001
0.513245 - 0.51325 - 0.513245224952697753906250000000 - 00111111000000110110010000001010
0.513245 - 0.51325 - 0.513245284557342529296875000000 - 00111111000000110110010000001011
0.513245 - 0.51325 - 0.513245344161987304687500000000 - 00111111000000110110010000001100
0.513245 - 0.51325 - 0.513245403766632080078125000000 - 00111111000000110110010000001101
0.513245 - 0.51325 - 0.513245463371276855468750000000 - 00111111000000110110010000001110

0.513255 - 0.51325 - 0.513254523277282714843750000000 - 00111111000000110110010010100110
0.513255 - 0.51325 - 0.513254582881927490234375000000 - 00111111000000110110010010100111
0.513255 - 0.51325 - 0.513254642486572265625000000000 - 00111111000000110110010010101000
0.513255 - 0.51325 - 0.513254702091217041015625000000 - 00111111000000110110010010101001
0.513255 - 0.51325 - 0.513254761695861816406250000000 - 00111111000000110110010010101010
0.513255 - 0.51325 - 0.513254821300506591796875000000 - 00111111000000110110010010101011
0.513255 - 0.51325 - 0.513254880905151367187500000000 - 00111111000000110110010010101100
0.513255 - 0.51325 - 0.513254940509796142578125000000 - 00111111000000110110010010101101
0.513255 - 0.51326 - 0.513255000114440917968750000000 - 00111111000000110110010010101110
0.513255 - 0.51326 - 0.513255059719085693359375000000 - 00111111000000110110010010101111
0.513255 - 0.51326 - 0.513255119323730468750000000000 - 00111111000000110110010010110000
0.513255 - 0.51326 - 0.513255178928375244140625000000 - 00111111000000110110010010110001
0.513255 - 0.51326 - 0.513255238533020019531250000000 - 00111111000000110110010010110010
0.513255 - 0.51326 - 0.513255298137664794921875000000 - 00111111000000110110010010110011
0.513255 - 0.51326 - 0.513255357742309570312500000000 - 00111111000000110110010010110100
0.513255 - 0.51326 - 0.513255417346954345703125000000 - 00111111000000110110010010110101
0.513255 - 0.51326 - 0.513255476951599121093750000000 - 00111111000000110110010010110110

Column one is the target number I’m interested in, the perfect value I want the computer to keep track of. Column two is that exact same number as filtered through a standard C style %.5f rounding filter used by printf — in other words, C’s normal attempt to round the input value down by one digit. Now it gets interesting. The third column is what the value looks like to C as a human number when I ask it to show me all of its cards. I want to know all that it knows about what it thinks this number is. This is done by asking for 30 decimal places with %.30f. And you can see that there is all kinds of clutter there! Those are artifacts — necessary compromises — related to encoding human numbers in a computer. The trailing zeros tell us I have shown all of what it knows. Ok, if the actual digits out to 25 places are kind of gibberish, how exactly did they get that way? The answer to that is how they were encoded using 1s and 0s. Column four shows the exact binary value that encodes this number. If you kind of know how counting in binary numbers work, you can verify that I must have picked a machine epsilon that was pretty close allowing us to review a slice of the sequence of every binary number possible.

Remember I am interested in 0.513245 and 0.513255 but those were not the input. I hunted those out of the results of all of the possible (six digit) numbers with grep. These values are completely typical. What this shows us is that for each of those numbers I have discovered 17 different ways that they could be encoded. It is important to note that none of the binary encodings perfectly match our target numbers. The closest that binary numbers can achieve is around the middle of each list and it is exactly there that you can see the second column making the switch from rounding down on 5 values, to rounding up on 5 values.

This brings up a very good question — which of these binary encodings will the system choose for our target number of 0.513255? The closest two candidates are repeated below.

0.513255 - 0.51325 - 0.513254940509796142578125000000 - 00111111000000110110010010101101
0.513255 - 0.51326 - 0.513255000114440917968750000000 - 00111111000000110110010010101110

It turns out that the answer to this question makes the decision to whether the system rounds up or rounds down.

0.513255 - 0.51325 - 0.51325-->4940509796142578125000000<-- Less than 5, rounds down
0.513255 - 0.51326 - 0.51325-->5000114440917968750000000<-- Greater than 5, rounds up

Ok, maybe you’re following along, maybe not, but the question remains, how can we predict the behavior of all these rounding systems on floating point numbers?

As far as I can tell, the answer is it is not possible to predict floating point behavior. Not for programmers. Obviously it’s going to be complicated, but it’s probably worse than you think. For example, if you ask your robot friends to explain "how (gcc) compiler optimizations can affect floating point accuracy" — oh boy! It’s ugly! (Reordering operations, vectorization for SIMD, FMA — Fused Multiply Add, etc…)

The Python documentation does have a "note" that warns, "The behavior of round() for floats can be surprising…" I feel that’s somewhat of an error of omission. I feel like it would be more correct to say "the behavior of round() for floats is essentially a pseudo random number generator".

All my programming career I just figured that this was in the nether realms of part per billion accuracies I don’t care about. It’s not every day I have to, for example, work in meter accuracies all the way to Mars. But what this investigation has taught me is that floating point numbers really can be poison. My extremely simple example of calculating sales tax is something most humans can understand, but I sure underestimated how hard it would be to get a computer to properly understand it.

If you do ever need to write software that gets simple things like sales tax right, check out Python’s standard decimal module which provides a numeric type which is superior to float when struggling with these issues.

Now that I’ve learned more than I wanted to know about computer rounding, I’m going to go back to not thinking about it too much. The whole reason this came up is that I have just added a round function to my programming language (by simply borrowing Python’s) and now at least I know what to expect out of it.

I still am tempted to write another rounding function which I have traditionally used manually. I call it athlete rounding and it basically rounds up if it’s speed (kph) and down if the value is a time/distance pace (min/mile). But no, no, I will learn to make peace with Python and C’s random rounding behavior.

For reference, here’s the C program I used to generate those bit representations.

/* bits.c - Demonstration of C's float encoding system. */
#include <stdio.h>
void printBits(size_t const size, void const * const ptr) {
    unsigned char *b = (unsigned char*) ptr;
    unsigned char byte;
    int i,j;
    for (i=size-1;i>=0;i--) {
        for (j=7;j>=0;j--) {
            byte= (b[i] >> j) & 1;
            printf("%u", byte);
        }
    }
}

int main() {
    float E= 3e-8; // Epsilon.
    for (float x=0.5;x<1;x+=E){
        printf("%f - %.5f - %.30f - ",x,x);
        printBits(sizeof(x), &x);
        printf("\n");
    }
    return 0;
}

Round And Round

2024-03-12 10:51

I’m no mathematician but I like to think I could comfortably score well on a third grade math test. And I would assume that my proficiency on grade school tests would transfer to the exact same applied problems as they arose in the real world. Today I was surprised to find this was not entirely true!

The topic is rounding numbers, something that is generally taught to eight year old kids. Let’s belabor the topic with a couple of examples.

Imagine you buy a $77.00 thing and the sales tax in is 7.5% — how much will you pay in sales tax? Go ahead and trust me that the precise answer when calculating 77 times 0.075 is 5.775. But that’s not how American money works and we must round. The grade school test question then is how many dollars and cents is shown on a sales receipt for this tax?

If you said $5.78, congratulations, you would ace a kid’s math test!

Let’s try another one. A different item is $211.00 — now how much is the sales tax? You can again accept that the precise answer is 15.825 which again needs to be rounded. What is the dollars and cents value printed on the receipt for this tax?

If you said $15.83, congratulations, you would ace a kid’s math test! Unfortunately, in some situations, you could be wrong!

If I have purchased a $211.00 item I can now very easily imagine that the receipt would show a 7.5% sales tax as $15.82.

First let me prove that there is a good reason to believe that the values would come out like this on a receipt. Receipts are created by software these days and most software is derived from other software that ultimately derives from something compiled by a C compiler. Consider this very simple C program.

/* rounder.c - Demonstration of C's rounding behavior. */
#include <stdio.h>
int main() {
    float num1= 5.775, num2= 15.825;
    printf("%f: %.2f\n",num1,num1);
    printf("%f: %.2f\n",num2,num2);
    return 0;
}

I’m just assigning the two values I mentioned and printing them out at the correct number of decimals. If I compile and run that, look what we get.

$ gcc -o round rounder.c && ./round
5.775000: 5.78
15.825000: 15.82

Awk is closely related to C and predictably follows.

$ echo 5.775 15.825 | awk '{printf "%.2f %.2f\n",$1,$2}'
5.78 15.82

What about Bash? You can type this right into any terminal.

$ printf "%.2f %.2f\n" 5.775 15.825
5.78 15.82

I’m guessing they probably all use a common library somehow.

What about Python? That’s actually where I first noticed this and it has this behavior too.

>>> round(5.775,2); round(15.825,2)
5.78
15.82

So this is clearly no quirk. For some reason all of these pretty serious computational systems seem to think that what you learned as a kid is not quite right. What I learned as a kid is that a value like 5.475 would be rounded up to 5.48, not down to 5.47. The rule I learned was if you are rounding and need to make a decision on a 5 you go up. In fact as a kid I learned an algorithm for programming purposes. Here it is in Applesoft BASIC as I remember it on my Apple ][+.

PRINT INT(5.775*100+.5)/100

Basically, multiply the number by 100, add .5 (letting that carry), chop off all the decimal part with the INT, and divide by 100 again to put it back into the correct scale. I have spent 40 years thinking this is how rounding works.

Here’s LibreOffice correctly imitating Excel, but it is somewhat interesting that at least in this example, it does not match the behavior of C and Python.

round-libreoffice.png

What is going on here? When I learned about rounding as a kid it would have been impossible for me and even my teachers to really learn much more about it. But today, of course there is an astonishingly rich Wikipedia page on the topic of rounding numbers.

It alerts me to the idea of "round to even". The official documentation for the Python round() function goes on to hint that is indeed the algorithm that is being used. It says.

…if two multiples are equally close, rounding is done toward the even choice (so, for example, both round(0.5) and round(-0.5) are 0, and round(1.5) is 2).

Note how this handles the weirdness of rounding negative numbers. I was taught that 24.5 rounded to 25 (rounding up) and -24.5 rounds to -24 (also rounding up in value). In Python (and similar) 24.5 rounds to 24 and -24.5 rounds to -24.

If you look over that Wikipedia page, you’ll start to realize that rounding is much more nuanced than your third grade teacher made it seem. I’m realizing that it is like date/time issues where armies of very smart programmers — many of whom are mathematicians! — pull their hair out over the fussiest of details.

xkcd 2867

Best to just let them get on with it and if you see some receipt that doesn’t seem to be rounded "correctly", well, it probably is!

UPDATE 2024-03-14 Or… Maybe not… At least not the "correctly" you were expecting. I just wrote a followup about this topic here.

Garbage And Lies - Part 3 - Selling A House

2024-03-10 08:46

This is the third and hopefully final part documenting my most recent home owning experience. You can also read part one and part two.

Interest Rates And Market

At about the exact time I had crossed the point of no return with beginning to remodel the kitchen, it is likely that it quickly became a bad decision due to forces beyond my control.

rates.png

The housing market is not driven by what people can afford to buy; it is driven by the amount they can pay in monthly payments. If, for example, a household has $2000/month to spend on housing, they can rent a $2k apartment or "buy" a house with a loan that requires $2k payments. This makes the actual value of real estate strongly dependent on home loan interest rates.

Mortgage interest rates have been almost freakishly stable for the last 15 years as well as historically low. But that all changed the moment I was committed to holding onto that house for a few more months at which time rates shot up. It feels like had I just sold it in the condition it was in at the beginning of 2023 I would have received the same price I got selling it a year later. The difference would be I wouldn’t have had to pour time and money into clawing back that value. When people tell me about their great stocks or crypto investments (bets) and I tell them that I can’t follow along because I singlehandedly have the god-like power to massively destabilize entire market economies, let this be exhibit A.

So despite the house looking better than it has looked in many decades, I was still left catching a knife. I also just missed the optimal summer selling window for a house with "Williamsville Schools!". But it was time to get out one way or another.

Finding a Selling Team

The first problem to overcome is choosing the real estate professionals whom I will be compelled to work with. Obviously if you’ve got the time and temperament, definitely type for sale by owner into a search engine and see what you turn up.

Unfortunately, because I was leaving the region, I needed a selling agent. I strongly believe that a selling agent does nothing proactive to actually sell the property. But they do two crucial things. First and most importantly, they get you registered on a visible MLS despite what the FTC calls the "challenged conduct" of these "services". I call it extortion by rent-seeking parasites.

real_estate_leech.jpg

The other thing a selling agent can do is organize some sensible photography. I have to say that if I was selling real estate as a profession, my photography skills would be extremely sharp. But I’ve looked at a lot of real estate photography and, wow, some of it is shockingly awful. This real estate photography educational resource is absolutely worth a look as a reminder of the competence level in the real estate profession.

BadRealtyPhotos.jpg

Although there should be much more to it, really it’s about the photography because that is pretty much the extent of what is done to sell houses. Fortunately, an ability to coordinate reasonable photography is something a seller can check up on: simply look at other listings. I made a list of agents who had sold property in my neighborhood in the past year whose photos were not too objectionable. I then moved onto the next round of the selection process.

Since I was going to be selling this house while living hundreds of miles away, it was critical that I be able to communicate with the agent. I guess normal people are fine with the (agent’s) plausible deniability with texting but I do not even own a telephone. I require email communication. I want to have the agent email me when there is something I need to attend to. All email. I do not want a text conversation jumbled with phone calls and isolated emails, etc. Let’s have a nice consistent record we can show a judge. So how can we check that our agent is competent at receiving and sending a timely reply by email? Simply send them an email. And that’s what I did for about ten agents.

Astonishingly, only two replied. Two! Come on idiots. I’m asking you to help yourself to a huge wad of cash for doing basically nothing and you can’t answer a simple email? Wow. I was blown away.

The first guy who wrote back (check) did sell a house in the area (check), and did seem to feature photography that used absurd lens filters, but in a professional and probably effective way (check). That’s our winner. I will say that in the end he was actually reasonably literate and kept up the email thing the whole time and, although my expectations are very low, he did not fall short of them.

Here’s an example of the listing photography - this room is not that big and it’s definitely not that bright!

brightoffice.jpg

Having been burned by being locked into an adverse situation when I bought the place, I insisted that the contract with this agent be 3 months and not the normal 6. Remember: "ensure commission at all costs" is their only goal, not yours.

I really have mixed feelings about the yard sign. At least they don’t dig a post hole like they used to, but it’s still a giant "Nobody’s Home!" sign and that’s a serious security liability to an unoccupied house. I’m not sure there’s much that can be done about that.

Since the state of New York requires it, I also had to find a real estate attorney. They’re not cheap but they’re not shockingly expensive either (ahem Realtors). And they actually do some important things. The first attorney I had when I purchased the place was referred through the "legal insurance" I had with my previous employer. Yup, that’s a thing and kind of worth it. That guy did a lot of work sorting out the title mess and I paid exactly nothing for all of it. Unfortunately that guy retired before I could use him to sell. I did ask for a recommendation and he did give me one. I tried to email them but no response.

At this point, I was in a very difficult predicament. How can you find a real estate attorney whom you will entrust the entire proceeds of your sale to? Let’s assume you’re not in the city where the closing takes place. Well, you could ask your selling agent whom you have met and verified is not a Nigerian prince. But we’ve already established that the recommendations of real estate agents should be regarded as bogus. Let’s just say I used the internet and found someone who could answer emails. It was only later that I realized that there are probably a higher percentage of scammers with the skills to respond to simple emails than among legitimate professionals these days. We’ll return to this conundrum.

With a team duly assembled, it was time to sell that house!

I was far, far away which was both good and bad. It was good for our agent who literally had to do nothing but text our house’s electronic access code to various random people who hopefully were indeed buyers' agents. No scheduling to get us out of the house or actually doing anything.

Showing - Letting Unsupervised Idiots Into My House

And since nobody was there, the visitors really felt the need to kick the tires figuratively and I think the house literally. We went back every so often to mow the lawn and attend to things. And there were things to attend to! There were random weird messes left. Lights were left on. Stuff like that. But there were more disturbing things. Once we found a change of address confirmation for some random person that was not us or anybody involved. We found other scammer mail showing up too, our mail box apparently being used as a drop. Once I arrived and discovered that someone had run the garbage disposal until it seized up. I had to hustle off and buy a new one and replace it quickly. One time our agent called and told us that people can’t get in because some stupid previous agent locked all the knob locks (the house is 100% keyless). Fortunately the agent proved why I repudiate those cheap ineffective locks (and perhaps highlighted a former career skill?) by breaking in with a credit card. Fixing and cleaning up new problems every time we visited was very stressful.

Offer 1

After way too long, we were finally informed that someone had made an offer. I was surprised by how long it took because I’ve toured other houses in the area and never felt like I had the worse one, certainly for the money. That was a good indication that, yes, someone was interested in our house. It seemed they had loan entanglements and other issues, but they signed a contract to purchase — contingent on "inspection". And I’ve already indicated how that can go in part one.

This inspection did a lot of unpleasant things. First, they left the furnace disassembled; remember that if they had disabled that the unattended house would freeze, pipes would burst, and the house’s value would plummet rapidly toward zero.

They also broke my sump cover insulation. This is another area where they could effectively destroy the house. Every couple of years the new sump I had installed did get jammed with random spiders and such and breaking the insulation carelessly in an unoccupied house is a great way to jam it and destroy the place with a flood.

That was uncool. But what was really uncool was they undid the deal by crying "mold!" Apparently there had been evidence of mold in the attic (at least their inspector checked). Yes. No shit. Remember what I said about the showers venting directly into a sealed attic? Of course there had been mold. I fixed the root cause and it was not a problem. I never saw any mold and never had any reason to believe there was a problem. This is exactly the kind of thing you’d hope a selling agent would pass along. But no. That is too complex of a plotline.

Offer 2

I reassembled the furnace on my next visit and we were back to the starting line. All the while the price was being steadily lowered to match those annoying interest rate hikes. Finally I got word of a second offer. This one "as is" (not sure if our agent crafted that strategy, but it is one way to deal with transaction uncertainties).

Not only was there an offer, but the down payment was pretty big by American standards. They were still going to need a hefty loan, sure, but they definitely had committed to buying the house. Great. Give me the money and we’re done!

Not so fast! In fact, so, so, so slow. Amazingly slow. Despite the fact that the purchaser had put up a 15% deposit and been pre-approved, the loan approval was very protracted. And we just had to sit on a decaying house waiting for an undetermined date. Sure, like before, there was a date in the contract, but this time I couldn’t control how quickly their bank could issue a check.

It was really a full time job for me too. Every step of the way, I provided all documentation as perfectly as it could be done. I would tell the attorney that I was going to be in Buffalo and that I could just sign what needed to be signed and bring whatever documents were needed. Instead he’d contact me days after returning desperate for me to get stuff notarized and sent by overnight courier. But I did it. In the whole ordeal I dealt with 375 emails, composing 153 of them.

There was a lot of maddening stupidity surrounding the whole process. The lawyer really was worrying me with the endless cascade of mistakes and errors. He misspelled the simple-to-spell street name. He misspelled "Raod". He misspelled his own name. I am not even kidding! And the grand whopper of them all: (reusing old documents) he listed the beneficiary of the proceeds as the estate of some dead guy unrelated to me!

Then there was the stupid HOA. John Oliver correctly warns about the dangers of HOAs but I never had mine get too oppressive. I actually did enjoy some of the covenants that prohibited idiot neighbors from doing extra idiotic things around me. However, I consider it ridiculous that the HOA would hassle the seller during a transaction. If the buyer somehow gives me the cash, I don’t give a shit about what the HOA would like from me. As it was, they sent me a nagging email telling me that I had a bush covering up the mailbox. Oh good job HOA. Did you use streetview for that? Did the streetview car come around before I cut that thing down every summer. I was able to send them this image to show them that it probably wasn’t a problem at this time of year, and it certainly wasn’t my problem because this plant (which I regularly cut back) is on the neighbor’s yard!

mailboxbush.jpg

The HOA then slunk off. But there were plenty of weird things for me, the seller, to pay for. Weird because I hopefully soon won’t be giving a damn about this property. There was $525 for a survey. Does this make sense? Hell, I’d like to contract a corrupt surveyor who would falsely claim that I was selling 1000 acres. What’s it to me? I would have thought that the buyer’s diligence would demand they organize a survey that made sense to them. But whatever. Then there was $320 for a title search — same deal. I don’t care if the title is encumbered. In fact, ideally I’ve taken out a whopping HELOC, and bribed a title search to say it’s clean. Then I would have just disposed of that liability. So that makes little sense either. And then there is an HOA "Closing Doc Fee" of $100. That’s just a little dig to parting customers, kind of like cancellation fees for phone services if you terminate them. Again, I don’t care what they do to that property when I’m gone so why should I pay that? Whatever.

I took care of my end promptly and with no errors. And I waited. And waited. And waited. And one random day without warning, it was closing day!

Proceeds

It would have been great to know when the closing was going to be, but scheduling such things in advance so that I might plan a trip to collect my money is not something the real estate profession seems ready for. I learned about the closing from some people working for my agent’s feudal lord (yes, very much like the mafia). My attorney never emailed me. Apparently my house was now the buyer’s house and money had changed hands and I had no idea where that money was.

I waited until the next day to hear from my attorney. I got no answer to my email asking about the transaction. At this point I’m thinking, ok, it’s a scam. He has taken my money and is off to a tropical island. I started doing some research on the silent attorney who has all of my money and it’s looking sketchier and sketchier. It really was a blind spot in the whole process and I’ve still not worked out how I could have done better. I didn’t realize he’d be entrusted with the entire proceeds. Months ago I thought this process was predictable enough that I could be there to take possession of the proceeds in person.

After some more days, I finally was able to ascertain that the check was sent by the purchaser’s vassals who really did want the bank’s money to get to me. Still some glaring holes in that defense but apparently it was on the way and they finally coughed up a tracking number. But consider that packages are left lying around for all my hundreds of neighbors to pick over at my apartment. That was extremely insecure. Once I got on the trail of the delivery I was able to meet the UPS driver in the parking lot. I immediately took that check right to the bank and only when it cleared was the house sold in my mind.

There was also the matter of the down payment which the agent’s feudal lord had been earning interest on this whole time. No incentive for them to make any of this go quickly! They waited four days after the closing to send me the rest of my money. They never mentioned it or sent me a tracking number. Again, I had to frantically look into it so I could again meet the UPS driver.

H2O Closeout

After that insanely protracted transaction, you’d think that after banking the closing proceeds it would be over. Well, not quite. It turns out that in Erie County NY, the water supplier is some kind of governmental agency. This means that, unlike the electric company and other utility providers, they secure your account not to you but to the house. This means that if you don’t pay your electric bill they can sell your debt to bill collectors; if you don’t pay your water bill they can take your house. Because of this, there must be provisions for what to do if the seller somehow accrues a large water bill and tries to pass that on to the new owner. In my case this meant proving that I didn’t owe some astronomical amount and then having $250 withheld, i.e. about 5x the expected bill.

You can start to see the circular dependency here. I can’t fully pay off the water bill until the house has closed and I can’t close on the house without securing the water bill. In practice this means that after the house has closed the meter is read and a final bill is prepared. Once this is payed, you must request proof of a zero balance in your name for that property. And with that the attorney should send you the last of your money. It was 2024-02-23 when the final money was received. That’s three months after the purchasers said they’d buy it.

Lessons

  • The commission is the only thing that is important to the agent. The fact that they can sometimes be friendly and well-behaved simply reflects that.

  • Agents are often working for another agent sort of like the mafia. Their final commission is smaller than you might suppose. Their incentives should be assessed accordingly. It may be difficult to find an independent agent in smaller markets or certain neighborhoods where all agents work for the same capo.

  • The timing of real estate transactions is insane. Imagine taking the notorious punctuality of Latin America and turning it into a massive sector of the economy. That is real estate. And especially mortgage lending. Count not just on delays, but also not even knowing what the schedule is supposed to be. Of course you will be harried to be extremely prompt and punctual with a hundred tiny details.

  • An empty house is more valuable to buy than an occupied one. Especially if you need a place to live.

  • The phrase "time is not of the essence" in a purchase contract can make the stated date in the same contract moot. It can lock you into buying the place long after you have stopped wanting to.

  • Assume real estate agents can not recommend people to hire without a likely conflict of interest.

  • The agent is not trying to provide either party with maximum useful information. On the contrary, they will withhold information if they feel like you will fill in the missing pieces from your imagination in a way that favors their chances of getting a commission. For example, what excuse is there today for there not to be a floorplan in every listing? There should be a photo that shows every surface of every room.

  • If a job offer includes relocation assistance, it’s probably not nearly enough.

  • All verbal promises and assurances made by real estate agents should be assumed to be lies. Only signed things in writing count. From the beginning prepare the documentary evidence you will show a judge if the need arises.

  • The expense of real estate transactions is shockingly high with no commensurate justification.

To people who’ve gone around the block with a real estate transaction, these may not seem like surprising insights. And we could all just shrug our shoulders and say this is par for the course in the service economy. But the important part is the numerator in the equation of how much was paid per service rendered. I think it’s very illustrative to compare the two sets of people involved in both of my transactions, the real estate agents and the attorneys.

The attorneys, well, for a start, had to go to law school; the agents seem to have no competence minimum. For the purchase the attorney did a lot of scary work to resolve the title insurance mess. All of that was paid from a set amount from the legal insurance and I have to imagine it was under $1k. While my selling attorney did a lot of work recovering from his own mistakes, he also did a substantial amount of paperwork too. If I’m not mistaken, he also legally absorbed some professional liability in case something under his responsibility went wrong. I’d say the agents had a similar amount of forms and office work to do. They took on no liability for anything happening. Their liability came in the form of investing in the project (to the limited extent they did) and having no sale. I thought that the attorney fee was probably a little high for the work done at $1300, but probably about right to get an attorney to do it. Let’s say that buying and selling a house — one complete transaction — cost $2000 in lawyer fees.

How much did I spend on real estate agents? I’ll give you a hint. It’s more than I’ve ever spent to have anybody do anything by quite a bit. The total for half of both transactions (one complete buy/sell cycle, splitting the damage with the other parties) was $16,600. For that kind of money I’d expect an architect to design me a really nice custom house. Or a roofer to get pretty far along with replacing the roof. Or someone to mow the lawn and shovel snow for the rest of my life. Or the entire house repainted inside and out. But what real estate agents do is nothing at all useful or helpful like that.

If that kind of money was it and it included the attorneys and hefty tax bills and all kinds of other transaction costs maybe that would be reasonable. But at the time where you’re simultaneously needing to pay for moving expenses, internet installation, new car registration, title insurance, house insurance, repairs, etc, etc, etc, having to pay such a massive bill to "service" providers who don’t really seem to provide much of a service is pretty absurd.

Sometimes attorneys create jackpots from nothing as in the case of large class action suits, but for quotidian matters, their fee structure is usually per job or per hour, sometimes the latter tacked onto the former in difficult cases. This is the reasonable example that real estate agents need to understand. If they don’t, I have to imagine there will be a reckoning. I hope so. My favorite tech start up is the one that may not exist yet which eliminates this corrupt and mostly useless profession.

Timeline

2023-08-07

ready to sell, contacted agents

2023-08-11

gave our agent the go ahead to proceed

2023-08-12

moved truck full of stuff, now mostly empty

2023-08-18

moved another carload, mostly not living there now

2023-08-22

photos taken

2023-08-25

listing seems fully up

2023-08-27

first showing

2023-11-06

offer 1

2023-11-14

offer 1 - canceled

2023-11-22

offer 2

2023-01-03

closing date in contract

2024-02-02

closing date actual

2024-02-06

main proceeds received

2024-02-07

down payment received

2024-02-23

water bill refund received

Garbage And Lies - Part 2 - Renovating A House

2024-03-09 12:01

This is part two in my series documenting my experience owning a house in Buffalo, NY. You can find part one here. And part three here.

Renovation I

Upon taking possession, I got right to work undoing the damage of the previous occupants. Houses, especially American houses which are constructed out of garbage and lies, depreciate and decay every moment. Constant maintenance and restoration is required. The previous owners spent nearly twenty years doing none of that preferring to focus their efforts on things like painting entire rooms black or aqua, ruining woodwork with incompetent painting skills, punching holes in doors, etc.

The first thing I did was replace the sump pump. The last thing I needed was this decrepit single point of failure to spontaneously produce an indoor swimming pool in the basement. Clearly the instinct to replace this was correct because the old one’s check valve was found to not be functional forcing the old unit to pump 4X liters of water to expel every liter. sump.jpg

This new installation is not perfect, but it was a huge improvement. It includes a backup pump (gray box) that runs on water pressure. You can read a detailed post about my sump improvements.

The plumbing generally was abominable. There was one shutoff valve in the entire house! That blew my mind. And it was clearly about to fail. I had a new main shutoff professionally installed before I personally installed shutoffs on every toilet and sink. I also put shutoffs to the outside sill cocks and replaced the extant leaky ones with freeze resistant units. By the way, this may sound like getting overly nerdy about plumbing, but this is exactly the kind of thing that can destroy your house. That sill cock leaking a drip every two seconds for years made the yard always wet and swampy and that excess water exerted a hydrostatic pressure on the basement wall that over time was going to develop cracks as a result and leak water into the basement. Just fixing a simple spigot leak was probably one of the most important things I did to maintain that house’s longevity. The gutter covers I installed to keep the forest out of them is another such intervention. Do not let water build up around your house!

I also went around and replaced all outlets and light switches. I have no idea why Buffalo, NY developed the idiosyncratic practice to have outlets upside down but since about a quarter of my outlets were also wired incorrectly — seriously! — it seemed like a good opportunity to rewire the entire place properly. I also pulled out hundreds of feet of defunct wiring. It was insane! The place was choked with CATV cable like an invasive vine that had been left by each season of cable installer. (When I had the Fios installed, I watched the installer like a hawk… and he still managed to rip open a duct while I wasn’t watching and leave it leaking air with the cable running over the sharp metal tear he had made. Incredible. Yes, I fixed that too.) I also finally was able to get on the roof and remove an old VHF antenna and TWO defunct DishTV receivers.

exterior.jpg

After sorting out the water and electricity situation I moved on to the three bathrooms. In each one I pulled up a minimum of three layers of garbage flooring. It was incredible, like some kind of demented archaeology dig. One bathroom floor was very not horizontal, the cause of which I never quite figured out (probably flooding at some point causing warping). Once the garbage layers had been painstakingly pulled up, I had good tile floors put in all bathrooms, one of the few things I did not do myself. I then replaced all three of the toilets. The one on the slanted floor was a serious challenge to install plumb but I did it. You can’t really see the shim that raises the right side of this toilet 3/8" of an inch, but I can.

mbath.jpg

I replaced all the bathroom sinks. I had the shower resurfaced. The downstairs bathroom sink took me a while but it finally came out well — I wrote about that project here.

halfbath.jpg

In addition to fixing the shower vents, I did some other major improvements. I had the slab in the garage jacked up into its correct place with a concrete pump (six inches on one wall!). The guys who did that were surprised how much it had settled and how much volume was missing under it. Here is the garage floor before and after they raised it. Note the line on the top photo which is where the floor had sunk from.

before_after.jpg

I had some stumps removed and some dead ash trees cut to remove liability of them falling on the house. I removed the ridiculous 1970s intercoms that were in all the bedrooms. I put a new light over the kitchen sink, new lights in the garage and basement. Two of the bedroom windows were replaced; this greatly improved the view and functionality of the master bedroom window. The best thing I did for that house that I enjoyed myself was to add an efficient modern insert fireplace. Consider for a moment that before I had the engineered metal double insulated chimney flue installed, the chimney itself was made out of the exact same material that one was supposed to burn in a fireplace.

I painted all the awful — dark, hard to cover — room colors. By the end of living there I had repainted almost all of the painted surfaces. I also had to paint over much of the finished woodwork because the previous owners had been so careless and incompetent with their painting operations.

At that point my mission in Buffalo was over. The town itself had done me no endearing favors or provided any plausible prospects and it is no longer suitable for my winter hobbies. I was ready to leave. Though I was pretty tired of working on that house, there was much more to be done to prepare it properly to sell. I had known that the next major renovation had to be the rather dreadful kitchen.

Renovation II

The specific problem I faced that prevented me from even starting on this work is kind of surprising and worth understanding if you want to properly understand American houses. Conceptually the idea is that I’d tear out the cabinets and pull up the floor. Then paint, put back some new cabinets and put in a new floor. I did extensive computer modeling of the new plan and was sure that moving the fridge would be a major ergonomic improvement. But here’s the problem - I couldn’t move the fridge, not even to just pull up the floor. It was tethered to the wall with something I dared not touch - a water line.

Funny side note — when I was in college I thought that having a fridge that dispensed water was some kind of gold standard for living the good life. And when I graduated I quickly bought a brand new one. But I soon discovered that the concept is maybe better than the execution. In addition to the obvious plastic taste one should expect, the water lines and ice making equipment develop a kind of white growth that I’m not keen on for taste and other possible reasons, etc. As a rule, I no longer use water supplied by refrigerators.

Today in the USA of course, fridge water is universal. In new houses built of garbage and lies, there is often a special hookup for fridge water. But the idea was a novelty when my house was built in 1978. What typically happened was that a new appliance would be delivered and the installers would simply drill a hole in the floor, run flexible 1/4" copper tubing down the hole to the nearest cold water supply pipe, and then rudely puncture it with one of these pernicious devices.

garbage_valve.jpg

In theory, one should be able to close the valve and disconnect the line and you can (nervously) ignore it. What I have always feared would happen would be that something goes wrong with the valve and you can’t shut it off and you can’t even replace it (because the punctured hole may not match a replacement). And, wouldn’t you know it, that’s exactly what had happened in my house. When I moved in, this shit valve actually was ominously gummed up with a JBWeld "repair". I went to the plumbing supply store that had often given me good advice and asked them how to correctly tap into plumbing for fridge water service. They proposed these same destructive valves as the only way they knew of!

That was exasperating and it took quite a long time before I figured out a "solution" that really involved a clean substitution of one janky problem that was impeding progress for another equally bad janky problem that wasn’t. I shut off the water, cut out the entire section with the stupid fridge water tap, and jammed on a SharkBite flexi-hose. Done. Is that a real solution? No. Is it even good? No. Is it worse than what was there? Weirdly, no. But at that point I could finally rearrange my kitchen. Like these last four paragraphs, it’s the little things that can really waste a lot of time.

It didn’t take long to gut the cabinetry. I kept some of the facing frame members which were made of some very hard old wood. But mostly the cabinets were made of garbage and lies. Here’s one that was filled with mouse poop.

mouse_poop.jpg

Pulling up the floor — floors — was another odyssey into the archaeological past exploring the different disquieting ways our ancestors used to cover their kitchen floors with garbage and lies.

I was blown away by the incompetence and horribleness of what I uncovered. For example, the power cable for the garbage disposal emerged from a hole in the drywall that was likely made with a hammer. The dishwasher’s power just came up through a splintery hole in the floor’s plywood. I put proper boxes on everything and improved the cable routing. I put another 1/4 turn shutoff valve for the dishwasher to match the other two I’d put on the sink supply.

counter_assy.jpg

While doing all this work I studied the duct work in the basement very carefully and came to the conclusion that it must go up the wall to provide for stove venting. It’s obvious now, but that just seemed like an impossible conclusion given that there was a stove vent and it didn’t use this duct. I was already committed to drywall repair so I went ahead and cut some exploratory holes and sure enough, there was a duct there leading to the outside that had not even been opened.

defunct_vent_duct.jpg

The original drywall goons had expediently covered it up and the appliance installers had no idea it was there. And the occupants of that house spent 45 years ripping batteries out of the smoke alarms every time a toaster was turned on. Just incredible. In the end, I made a properly sealed connection to it with a venting microwave unit — a massive improvement all around.

I had planned to reuse the old sink but once the improvements had started to take shape it seemed like an eyesore. It’s impressive how you can order reasonable components at reasonable prices from The Store. That’s where the nice sink came from. We were in a bit of a hurry to acquire the cabinetry so we went to one of those big house part stores and bought a set of the line they keep in stock. In retrospect the better plan would have been to order the cabinetry as flatpack from the internet. The problem with pre-assembled cabinets, besides being very limited in selection and availability, is that they can be easily damaged before you even get them. We had the tall cabinet delivered and it was cracked upon arrival requiring some repair work that exceeded simply assembling cabinets.

Still in a hurry to acquire the materials, we needed countertops and had no plan for what to use. One of the biggest lies in real estate is that granite (and marble) countertops are good and sensible. I have them now in my current apartment and they are fragile, discolor easily, need special care with questionable chemicals, contain radioactive elements, dull knives, easily shatter glass and ceramic, and obscure what needs to be cleaned. What’s worse for people who can do a little math is that granite countertops will turn a $100k shitty house into a flipper’s $200k shitty house. I’m no doubt lighting hundreds of dollars a month on fire to rent mine right now.

While it was tempting to fool some idiot into vastly overpaying for the house based on this insane fad, I just couldn’t do it. And I mean literally — that would require contractors and good luck finding anyone. (Competent, timely, cost effective — you can never have all three! With some jobs I tried to hire help for, I couldn’t get any!) I needed a countertop solution that I could install myself immediately.

In my opinion the best countertop is butcher block wood. If you don’t like the look of wood in general, I’ve got some bad news for you about how humans usually construct dwellings. First off, wood is relatively easy to work with — I managed it with little trouble. It’s solid and functional but also light enough to handle and move comfortably and doesn’t need special reinforcement. It’s quite stable and accurate. It’s what’s under most laminate counters. The seam I created where the two pieces meet in the corner was out (flatness) by about .006" which is much better than the alignment of my current granite counters. An unappreciated feature of wood is that if you damage it you can refinish it, or, because it is one of the cheapest counter materials, simply replace it. It’s really the easiest material to swap out. We found a wooden countertop was a pleasure to use for kitchen work. So much so that I currently have a slab of the extra cuts from it sitting on my granite countertop. In summary the wooden countertops were available, cheap, tractable, relatively quick to install, and in the end, looked fantastic.

countertop_sink.jpg

When it comes to house renovating, it is never enough to simply be able to do everything extremely well. You must also be able to achieve a good result when the house you’re attaching your work to is wildly misaligned. One problem that was typical of the whole experience was that the floor in the NW corner of the kitchen was 3/4" (20mm) higher than the floor in the SE corner of the same room. So getting a counter top to make any sense was really more like sculpting than installing cabinets. To put it in perspective, the previous counter installers were sure that it would be ok to just bend the particle board counter body that 3/4". And yup, an orange would roll off of it if you were not careful. My countertops were dead flat.

kitchen_done.jpg

That photo also shows the weird ledge in the foreground that I had to dream up and build (hand planed) to replace the atrocious counter top that was there. That counter didn’t match the others, no doubt because some previous round of kitchen counter replacement couldn’t figure out how to deal with this weird thing. My solution isn’t great, but it’s not bad given the very difficult geometry I had to work with.

With the kitchen remodeled, it was finally time to put back a new floor. I had pulled up the flooring from the kitchen and that required pulling it from the dining room. We also did the front hall just to make a clean sweep of all non-carpeted floors. One of the things that really bugged me about the house as I bought it was the ostentatious incompetence of whoever had installed the previous floor. When you are very inexperienced with putting in flooring and you put down a few rows and realize that all the seams will be in the same place if you don’t cut and stagger the boards, well, you pull it up and, if necessary, go spend another $30 to buy another box and you try again! Not only could the person who installed that floor in 2008 not foresee that obvious problem, but once it was manifest and glaringly obvious, they didn’t bother to correct it. It boggled my mind every time I was in the kitchen.

kitchen_wide.jpg

I’m not saying it’s easy to get all the seams to be distributed perfectly. But we came pretty close. The floor we bought had about a dozen different fake (lies!) wood grain patterns and we also did a pretty great job of making that repetition very hard to detect. What bugged me most about the flooring itself was the connector design. Every board end must be knocked into the end of the previous. Before they’re pressed together, their connection flanges take up 5/16". That leaves 1/16" to jam a tool between the wall at the end if you’re trying to leave 3/8" expansion. And that’s fine with me and my machinist sensibility. But it’s not fine with the walls which were wildly not straight anywhere. I did the best I could but always had the feeling there was a fundamental design problem when only 1/16" was left for a tool to exert enormous forces right up against a delicate wall.

hall_done.jpg

While the floor was up, I also finally was able to paint over the awful red on the walls in the front hall. This involved some rather challenging high ladder work but I managed to not fall to my death. With lighter color walls, the place looks so much brighter. People think that "a splash of color" will "brighten" a place up but it usually has the opposite effect causing the walls to eat all the light in the room. We also put in a new track light that was a massive improvement.

There was a lot more I didn’t mention and we could have kept going indefinitely but after getting all the worst rooms mostly rebuilt and into reasonable condition, it was time to sell!

Timeline

2023-05-15

solved the fridge supply impasse

2023-05-18

all floor up, old cabinets removed, sink out of service

2023-05-24

kitchen walls all repainted

2023-06-01

!! 10 day break - travel

2023-06-16

all new cabinets in

2023-06-20

flooring purchased

2023-06-23

countertops installed and sink service restored

2023-07-01

finished hall painting and new hall floor

2023-07-04

finished new kitchen floor

2023-07-06

!! 6 day break - travel

2023-07-21

!! 7 day break - travel

2023-08-04

finished custom kitchen/dining room ledge woodwork

--------------------------

For older posts and RSS feed see the blog archives.
Chris X Edwards © 1999-2024