-
Wednesday Omens
Subtitle: Do you want a cat?
-
This morning the cat spilled my entire full mug of tea on the sofa. The entire couch cushion was soaked with sweet, milky tea. The space between the two branches of the “ell” of the couch was covered with tea. I could not separate the couch pieces and had to unscrew some sort of hardware from the bottom of the couch. I used an entire roll of paper towels cleaning this up. I did not do nearly as good a job as I wanted to because I had to leave to go to my dentist appointment.
-
Traffic.
-
No onlay for me! Once the dentist started working on tooth #4, he discovered that it has a crack in it. Turns out I was wrong when I snarked that onlays cost as much as crowns.
-
After spending over $3000 on dental work this week, I am certainly not buying a theremin for the cat. (It would be for the good cat.) Related: I am absolutely certain that I could derail a major project at work by putting a theremin on one particular colleague’s desk.
-
Neurology status: Phone tag.
-
-
New Adventures in Dentistry
Let’s not talk about yesterday. Today was blandly dull by comparison. Tomorrow I am having dentistry inflicted upon me: the first steps in getting a crown and an onlay. This will be my first onlay. Apparently “onlay” is a fancy dental word that means “like a crown, but doesn’t go down as far, but still costs the same amount.”
Depending how you count, this will either be my fourth or my seventh crown. It will be the fourth tooth to get a crown. Both the crowns from 2003 (my oldest two) have been replaced; one of them has been replaced twice. The oldest crown I have is one of the gold ones that I got when I was living in Knoxville.
Tomorrow’s work will be replacing some large fillings that are just shy of their 30th birthday. They have outlived the dentist that installed them.
I remember when I got those fillings originally: During the summer after ninth grade, I had to go to the dentist four Tuesday mornings in a row to get a lot of fillings. In dental lingo, I got fillings in 2, 3, 4, 5, 13, 14, 15, 18, 19, 29, 30, and 31. So any of the large “silver” (mercury) fillings in my mouth date from July 1988. I didn’t really do much that summer except read books and get dental work done. I had to read A Death in the Family as the summer reading book for my 10th grade English class. I was reading a lot of Martin Gardner books from the bookmobile that summer. It was super-awesome that the bookmobile was able to get books that I requested from the main library because it was sort of inconvenient for me to ride my bike all the way to the main library. (You need to keep all this in perspective; Schenectady is not a large city; I can’t imagine that any of the distances that come up in this story are longer than 3 miles.) Right around the time that I was getting all that dental work done, I would talk incessantly about The Ambidextrous Universe and parity violations to anyone who would listen to me.
Since I didn’t have a lot of experience with dentistry up to that point, one of those Tuesdays I had agreed to have lunch with my friend Brian. Originally we were going to go to the Friendly’s on Union Street, but then once we got there, we changed our plans to go to the McDonalds across the street. I managed to eat my lunch despite the fact that the novacaine hadn’t yet worn off. We got losing gamepieces for the Monopoly game. I tried to tell him about physics and time travel. He told me about spending time with his relatives in Bradenton, FL and playing tennis with famous people.
This memory sticks in my head because it was fairly uncommon for me to actually go and do social things with my friends—and even more so with friends that I was not particularly close with. I do remember spending a bunch of time in various people’s basements when I was in high school, but that was almost always in the context of a group of people who were together to do something like play computer games or work on paste-up for the school newspaper or to accomplish some particular task.
This story does turn out to be another episode of all my friends are dead. This story doesn’t really haunt me, as Brian only died only a few years ago of some sort of previously-undiagnosed heart condition. I mean, it’s sad, but we had pretty much fallen out of touch. And it’s not at all like the situation with Michelle where she wrote to me about overdosing on prescription medication about a year before she killed herself, and I didn’t tell anyone.
Brian and I were never close friends. And since I am bad at reading social signals more than once I did wonder if we were really friends at all or if he was just making fun of me the whole time. We hardly ever socialized outside of school. He was far more popular than I was, and he went to the sorts of parties that I would never be invited to. He would show up to school hungover and would bum Advil off me. On weekend mornings when our lawn would be covered with empty beer cans, my parents would insist that it was my “friends” that had done it (I blamed their students), but my mother would still happily pick up the cans and return them for the bottle deposit. My guess was that if it were anyone that I knew from school, that it probably was Brian and his friends. Once, in 11th grade, I came home from school to find Brian sitting on my front porch, and we sat and talked for a while.
Here’s a picture of Brian from some time in high school. Sorry about the phone-photo-of-a-photo, but I don’t even know if my scanner works any more. There is no date on the back of the photo, but it says, “Ode to a Party (by Sparky C—).” I’m not sure where the party was (probably somewhere in Rosendale Estates?), but I certainly was not invited. I was not even aware of it until Brian gave me this picture.
Brian graduated a year early from high school to avoid having to switch school districts when he moved from his mother’s house to his father’s house, and he spent the 1990-1991 school year living in Bonn, Germany. He was delighted that school in Germany didn’t care at all if you went to class. Despite the fact that he had already graduated from our high school, he contributed “special correspondent” pieces to our school newspaper about German reunification. At one point during the year he was in Bonn, he sent me a gift of a few pencils, which I might still have, and a fountain pen, which my college housemate Lisa borrowed and never gave back. I think about Brian each time I go to one of the cute stationery shops in Bonn.
Because of that one lunch at McDonalds, I’ve always had a mental connection between Brian, The Ambidextrous Universe, and my summer of dental work. And after tomorrow, only three of my fillings from the summer of 1988 will remain.
-
Sunday Scripting
Went to the coffee shop today to read the paper (OMG, why does the NYT insist on giving attention to horrible people?). Then I cleaned up the script that takes the headache data from my phone and turns it into a calendar. It’s basically a ggplot2 graph with a bunch of
geom_tile(aes(x=weekday, y=extWOY, fill=as.factor(Headache)), color="black")
, where WOY means “week of year” (and “ext” means that there is a fudge factor to put a blank row between months) together withscale_y_reverse()
and a lot ofelement_blank()
.I’m not even going to bother running the statistics on whether or not the levetiracetam has an effect on my headaches because even if there is a statistically significant effect (and I am not convinced that there is one), it is so small that it does not matter for my quality of life.
I’m seeing the neurologist in about a month, so I want to send the office a message about the current state of things so that they can ask the insurance company if they would pay for the various things that they don’t want to pay for.
-
Friday Eff Up
As I’ve mentioned before, the conventional wisdom in building your personal brand in the digital sphere is that one should use alliterative hashtags based on the day of the week. Too bad today is not Monday, as the most exciting thing that happened today was a #migrainemedicationmistake.
So, I had a migraine today. I also had one yesterday, and I had one the day before that.
If I were the sort of tragic hero that we learned about in ninth grade English class, my choice would be between taking rizatriptan or not taking rizatriptan. This is the medication that miraculously makes my headaches go away—entirely—for the rest of the day and that usually works within an hour. However, the insurance company will only allow you nine tablets per month. Also, if you take this medication too often, it will give you headaches. (No joke.) (Code: G44.41.)
Foreshadowing: I combine my rizatriptan with naproxen sodium, which is kind of like Aleve but somehow slightly different.
So the game is if you get enough headaches per month that you are at risk of ending up on the path to G44.41, then you try to find something that you can take every day that stops you from getting headaches. You might start, like I did, with propranolol. If you are like me, you will get annoyed that the nurse at the allergy shot clinic had not asked you if your medications had changed and gave you your allergy shots even though you had been prescribed propranolol and picked up the prescription (so if our regional electronic medical records system was working at all properly, the nurse might have known that I could be taking propranolol). And you would have written a letter (on paper!) to the doctor in charge of the allergy clinic. Propranolol is a beta blocker, and it is very dangerous to get an epinephrine shot when you are taking beta blockers. And allergy shots have a non-zero chance of triggering an allergic reaction. But propranolol did not do anything at all to help my headaches, so I stopped taking it. And I am not going to go back to the allergy clinic because not only is it inconvenient, but I still do not trust the nurses. One nurse started to write down in my file that I was pregnant, and she was going to adjust my allergy shot dose based on that assumption—but I was just fat, that was all. (WHO DOES THAT!?)
So when propranolol doesn’t work, next you take amitriptyline. To save you from having to open a separate browser to look these up without ruining your search history, propranolol (the first drug I mentioned) is a blood pressure medicine. Amitriptyline is an old anti-depressant. My guess is that Michelle overdosed on it. But I was taking a very low dose. It made me sleep a lot, and it did nothing for my headaches. Topiramate (anti-seizure medicine) was next. Before I had even stepped up to the 45 mg/day dose that my doctor wanted me to take, I had to quit because the side effects were completely unacceptable. As noted in the 2004 paper by Silberstein, Neto, and Schmitt, “The mean change from baseline in migraine frequency was significantly greater for patients treated with either 100 or 200 mg/d of topiramate (P <.001 vs placebo) but not for those treated with 50 mg/d of topiramate (P = .24).”
Next was the Botox run-around.
Me: I heard that Botox is FDA approved for migraine. Can we try it?
Doctor: The insurance companies hate paying for it.
Me: I have money. Let’s try it.
Doctor: The insurance company won’t pay for it.
Me: I will pay for it.
Doctor: I don’t know how much it costs.
Me: I don’t care. I will pay for it.The doctor was not willing to prescribe a treatment that the insurance company won’t pay for.
And then there was that whole weird migraine aura thing that had me in the hospital last summer. And it seemed like levetiracetam (another anti-seizure medication, but one that does not give me any side effects) helped with that, so now I am taking that.
That brings us to today’s minor adventure. Recall: my standard response to having a migraine is to take rizatriptan and naproxen sodium. Meanwhile, I take levetiracetam twice a day: once in the morning, and one in the evening.
You probably can guess how this played out.
This is rizatriptan:
This is naproxen sodium:
This is levetiracetam:
Fortunately, I am on a low enough dose of levetiracetam that taking an extra pill is not dangerous at all. Most adults take twice as much as I do. Also this confirmed my suspicion that the rizatriptan is primarily responsible for making me feel better, rather than the naproxen sodium.
Since I’m pretty sure that the levetiracetam isn’t working that well for me, when I see the doctor next month, I’ll find out if I can try something else that doesn’t look remarkably similar to any of the other drugs that I take.
-
rstats, NA, NA.1, NA.2, and Stupid Mistakes
Because I hate conventional advice, I have no issues with telling the entire internet about my flaws and the stupid mistakes that I make. As a mathematician, I have a lot of practice at making mistakes. Fortunately, I am also getting better at fixing them. I also have no problem letting the internet know that I am skeptical about a lot of modern “machine learning” techniques, and I suspect that a lot of problems can be solved using less exciting methods that have been around since the 19th century.
Recently I have been getting a lot of crazy results from my R code that look like
NA <NA> NA NA.1 <NA> NA NA.2 <NA> NA NA.3 <NA> NA 14 <NA> 12 NA.5 <NA> NA NA.6 <NA> NA
The row names are weirdly numbered NAs, like NA.1, NA.2, etc. The values are NA. It is a weird chaos of NA and things that just do not look right. Some sort of dataframe nightmare version of that scene from Being John Malkovich when John Malkovich went through the portal to John Malkovich’s mind. But with NAs instead of John Malkovich.
And then I figured out what I was doing wrong: If any of the variables contain NA entries, and I subset with the bracket notation with respect to that variable, then this happens.
For example, I can make this sort of thing happen with:
V1 <- c("red", "orange", NA, NA, "blue", "blue") V2 <- c(1, 2, NA, 2, NA, 7) the_data <- data.frame(V1=V1, V2=V2) the_data[the_data$V2 > 1,]
This can be prevented with
the_data[!is.na(the_data$V2) & the_data$V2 > 2, ]
, which is annoying (but effective).In my particular case, it can also be prevented by not using an outer join when you meant to use an inner join. My colleague claims that the only join that one should ever use is the left join, but I am quite partial to the inner join. Except when my fingers type faster than my brain is thinking and then I use an outer join instead (by mistake).
There is also a terrible way to work around this if the NAs are in the data on purpose. This most often happens to me with dates, when the feature I’m looking at hasn’t happened. Fortunately for me, nothing that I care about existed back in 1969, so our standard way of making things go away is to send them to 1969.
First off, my terrible solution doesn’t work in R if you have factor variables, so you’d need to start off by doing something like
the_data$V1 <- as.character(the_data$V1)
. I rarely have factor variables these days because I’m reading almost all of my data directly out of a database, so everything that might be factor-like comes in as characters already.But once you have done that, you can very carefully conjugate with a replacement function.
the_data[is.na(the_data)] <- -1 # Do your stuff that breaks with NA the_data[the_data == -1] <- NA
If you choose your value well, this replacement is an invertible function, so after we conjugate, we are right back where we started. If you choose poorly, then your inner mathematician ends up distracted by thoughts of whether it is worth thinking about what it means to define functions on strings, and what it would mean for such functions to be linear, and whether there are any interesting diagrams to be drawn. I am fortunate to work in an office where there are a lot of people who know a heck of a lot more category theory than I do, so if it ever were valuable to define a category whose objects are columns in our database, I would know exactly who to ask for help.
But since there is no reason to delve into category theory or to come up with an overly complicated system to describe the errors in my code, tomorrow I will make sure that I have removed all of the outer joins from my code, and I will be able to focus on our discussion if the right scoring metric to use is the difference between the two important columns or their ratio.
-
Wednesday Omens
-
The avocados went bad.
-
Went to the dentist today. Turns out that this was the first episode of a very, very, very expensive trilogy. I’ll be going back next week.
-
Migraine.
-
Traffic.
-
Gonna screw up my sleep schedule even more by going on another photography adventure tonight.
-
Jim’s asthma inhaler costs $400 a month.
-
Students are complaining about something that they care about a lot more than we do.
-
Original version of this post said “Thursday” instead of “Wednesday”
-
-
Just Because You Say It Doesn't Mean It's True
I saw a Facebook ad from some sort of ridiculous company that said something along the lines of, “If you’re seeing this, we want you!” and had a link to their hiring page.
-
The business model seems to be a mashup of Napster and cryptocurrency. You share content (possibly? likely? content that you don’t actually hold appropriate distribution rights for?) with other users, and there is blockchain and imaginary money involved. During my youth, I may have spent many hours in the home of “The Distributor”, a notorious Schenectady-based software pirate, but those days are behind me. Now I buy all my digital content (with the exception of the copied DVDs mailed to me, unbidden, by a friend of The Distributor). Also, I am not enthusiastic about blockchain.
-
They describe themselves as having a “flat” management structure, which I believe is code for, “We thrive on chaos.”
-
Maybe they want me to answer the phone? Because they certainly have a “type” for their technical staff, and it is not middle aged ladies.
-
How do they make money? Do they make money? (Real money, not Beanie Babies money.) I’ve reached a point in my career where I will only work for companies that make money.
-
subscribe via RSS