• Clearly This Is My First Pandemic

    You know how people say, “this is not my first rodeo”? Well, this is very obviously my first pandemic. I am all discombobulated. And then there is the pressure about what to write here. I worry that some sort of social historian of the future is going to look at all the things that we wrote and all the memes and whatnot and draw some sort of scholarly conclusions about our time. Or will judge us. Do I want the judgement of the future? No, I can not deal with any more judgement.

    So the pandemic is getting off to a pretty shaky start. Pandemic noob that I am, I really don’t have a handle on how exactly this disease is transmitted and what the relative risks are. There was a lot of hype about hand-washing and hand sanitizer and not touching your face, which made it really seem like virus-touching was what we needed to be worried about. A lot of news about surfaces. It can remain on copper for 4 hours, cardboard for 24 hours, stainless steel for anywhere from 2 to 120 hours, plastic for 72 hours, and cruise ships for 408 hours. I do not have any cruise ships in my home, but I definitely have a lot of cardboard and plastic, much of which has arrived lately because I have been having things delivered.

    Now the virus buzz seems to be pivoting to invisible floating clouds of virons. Some internet source that I will never be able to find again asserts that virus-touching is not a big deal but that virus-breathing is a much bigger deal than we had originally been led to believe. Still worse, it claims that the invisible cloud of virus extends not just a polite social distance of six feet away but rather a more troublesome 15 feet away. And that it can linger for three hours. And that the virus-spreaders might not even know that they are the source of a cloud of virus.

    I am trying not to have inessential stuff delivered. My goal is to stay pretty close to the minimum amount of stuff that I will need and not buy more than that. Not only does that make it easier for other people to get what they need, but I do not want warehouse and delivery staff to need to leave their homes any more than necessary. Nor do I want any more people than necessary breathing near my front door.

    We ordered groceries to be delivered today. This I can justify because clearly we need to eat, and we ordered sane amounts of normal groceries. And, knowing ourselves, we did not order the sort of produce that goes bad quickly in your fridge. After bringing the grocery bags into the house, I started washing the the food before putting it away. The virus-touching science seems to be somewhat unsettled at this point, so it seemed safer to wash everything. Never did figure out what to do about the eggs because our egg cartons are all made of a fragile cardboard (maybe wait 24 hours?) that disintegrates in water. Worse yet, I made a terrible rookie mistake in my grocery-washing, and I was spraying my food with soapy water, based on the internet animations of soap molecules having both polar and non-polar ends and, thus, disassembling some sort of lipid structure of the virus. However, I later realized that my blasts of soap were spattering off the surface of the groceries and sending droplets of who-knows-what into the air. I think that I could recover from this error because my city only has 20 COVID-19 patients in intensive care right now, which means that if I get sick from my poor grocery-washing technique in the next few days that I should still be able to get medical treatment.

    At this point I would like to remind you that the symptoms of panic attacks overlap with the symptoms of just about anything else that you might worry about. But that also means that you’ll need to decide if it’s the right time to stop dismissing your symptoms as “just a panic attack” and call a doctor.

  • Will the Plumbing Saga Ever End?

    The plumbers started the repipe of the building on February 10. That was almost a month ago. This project was advertised to take roughly 2-4 days per pair of apartments. Each upstairs/downstairs pair has its water pipes branch off the main service in roughly the same place. The main service runs along the center of the building, in the ceilings of the downstairs units.

    So when were they going to start here?

    First, they were going to start here on February 20. Then it was supposed to be February 24. Then it was supposed to be February 26. They started on February 27.

    Finally on Friday, March 6 they had finished the plumbing work, and the work passed inspection. They claimed that when they come back on Monday, March 9 that they will patch my drywall and put my laundry machines back in the laundry closet so that I can do laundry again. They also noted that the apartment downstairs from me had pretty serious damage (main pipes in the ceilings were replaced, too) and that all the drywall-fixing is going to take a while.

    Today I patched the drywall in my laundry closet. Tomorrow I’ll sand the joint compound, put on a second coat, and call it good enough. It’s going to be behind my washing machine, so no one will see it. My laundry machines can go back to where they belong, and my cats will have fewer opportunities to climb inside my walls.


    In my act of defiance against the horrible interior norms of California, I am not going to apply texture to my repair work. Even though the rest of the wall is textured and the cut-out pieces I replaced are textured. I hate texture. If I were not motivated to get this all done as quickly as possible, I would have applied a skim coat to all the walls in the laundry closet, sanded them smooth (despite the shortage of drywall-sanding masks), and had a small part of my home with smooth walls. If the stock market unbreaks itself enough for me to think about buying a house, I dream of having all the walls made smooth before I move in.

  • Stress Knitting

    I knit a sweater in 10 days. From cast on to bind off, including blocking and weaving in the ends. The whole 900 yards. In 10 days. Sure, it was bulky yarn, but I’m not usually one to actually finish knitting things. And I’m usually pretty terrible at all those fiddly steps at the end to get the darn thing actually finished.

    I took this picture on Sunday, before I had finished weaving in the ends. But I promise you that they are woven in; I wore the sweater to work yesterday. The reason the photo is cropped that way is because in order for you to see the texture in the black yarn, there is so much light entering the frame that everything light-colored is completely obliterated due to over-exposure.


    Why did I knit a sweater in 10 days? Well, the other option was heavy drinking, and that really did not fit in with the rest of my plans.

    Some stuff changed at work, and now there are a bunch of new rules. I had to add an extra column to one of the database tables so that it was clearer which parts of the information have special restrictions. This sort of change was not really a big deal. It was a little bit stressful, though, because I had to run a query that modified data on the live server.

    There are some other new rules, and I am anxious about the way in which they were implemented. For example, we are no longer supposed to go in the door that doesn’t latch correctly because after a zillion warnings for us to check that the door is latched correctly, someone always forgot, and then the door wasn’t actually closed. But some people are still using the door! And that strikes at my sense of fairness. WHY ARE YOU USING THE FORBIDDEN DOOR! IT IS FORBIDDEN! And the front desk staff are now in the position of enforcing the rule about the forbidden door. If I were in charge, I would have also changed the lock on the door because that really would have stopped people from using the forbidden door.

    There are also more rules coming, but they are currently secrets. Perhaps I will no longer be able to say things on the internet about there being rules. Perhaps I will no longer be able to tell you that the door is forbidden. As it has a quite large NO ENTRY sign on it, I can’t imagine that it is a secret that this door is forbidden.

    You can see why “knitting a sweater” is a better option than drinking when these are the sorts of concerns that are stressing one out.

    Oh, and all of the politics-people are terrible in one way or another. Sure, some of them are more terrible than others, but none of them are non-terrible.

    I’ve also taken advantage of the coronavirus panic to convince myself to cancel a doctor’s appointment with the extra-specialist. I wasn’t all that keen on seeing the extra-specialist anyway, and now I’m certainly not going to sit in a waiting room of a large medical building with lots of doctors (not just specialists and extra-specialists). I didn’t actually cancel. I rescheduled for his next available, which is in May. He’s a busy guy; I’m sure that they’ll find someone to fill in my spot.

    The whole reason that I was seeing the extra-specialist in the first place is that the specialist wants to know more about things that don’t really matter.

    Back in December I saw the specialist (note: this is NOT a neurologist), and the conversation unfolded somewhat like this (obviously paraphrased):

    Specialist: So how is everything?

    Me: Pretty good. I now have a minor symptom, but it’s not bad.

    Specialist: There is no reason why you would have that symptom. Some people have that symptom because they have a funny-shaped bone in their heads. We could do a CT-scan to look at the bones in your head!

    Me: I have had two CT-scans and three MRIs (one of which you ordered) of my head in the past three years. Can you look at the bone on one of those scans?

    Specialist: No, no, no. We need a special scan to look at the bone.

    Me: What if it’s not because of the bone?

    Specialist: That happens. We don’t know why. In that case we can’t do anything.

    Me: What if it is the bone, what would we do?

    Specialist: We could do surgery on your head to change the bone. It doesn’t always work.

    Me: What if it is the bone and we don’t do anything?

    Specialist: You would still have the symptom.

    Me: Let’s pass on the CT-scan.

    Specialist: But I really, really, really want to know if the bone is responsible for your symptom. I am very curious! If you won’t do the scan, can you talk to my colleague, the extra-specialist, in case he has a good idea why you are having the symptom?

    So at the time, I agreed to talk to the extra-specialist because his office is kind of on my way to work, and I had forgotten that my new health insurance is based on people charging me unpredictable and seemingly random amounts of money only loosely connected to medical treatments that I receive.

    But now does not seem to be the right time for me to go and sit around a waiting room with a bunch of hypochondriacs with regular colds who will then give me their regular colds and then force me into isolation like some sort of biblical leper until I get over the cold. Not only does this medical building have shared waiting rooms for wildly different types of doctors, but it also pressures you into checking in with a touch-screen kiosk and makes you authenticate yourself with a palm-scanner. Do not need.

    And I have not even mentioned the plumbers. They are replacing every single pipe in the entire building. My walls are full of holes. My washing machine and dryer are in my living room because many of these pipe-accessing holes in the wall are in the laundry closet. Seemingly aribitrary parts of my apartment have no running water. For example, my kitchen had no water for three days. This ordeal has lasted almost a week so far and has no signs of ending soon. My cats are currently incarcerated at a pet resort to keep them from setting themselves on fire with the plumbers’ acetylene torches or getting stuck in the walls or whatever cats do during major plumbing projects.

    I might need to make another sweater.

  • Knitting and Codes

    Sorry for yet another blogging drought. My recreational internet time has been devoted to trying to participate in a contest in which I could win eight skeins of yarn and some other stuff (needles, stitch markers, a pattern, pins, that kind of stuff).

    You wouldn’t be too surprised about the form of the contest: Interact with the brand’s partners in various ways to get codes and submit the codes on the contest web page. The more codes you submit, the more likely you are to win the yarn.

    A discussion has come up on the internet: Should you collaborate with others to get more codes. If I could find some codes and you could find some other codes, should we share our codes with each other? And here is where the structure of the contest comes into play. So far most of the discussion that I’ve seen has been about the ethics of collaborating and people’s intuitions about how much this affects their chances of winning.

    This is not your standard type of raffle in which you put all the tickets into a hat and then keep drawing until you have awarded all the prizes. I haven’t taught our combinatorics classes, but I wouldn’t be surprised if we had a problem about standard raffles. In this case, if we collaborate, I may lose my edge over you, but we both have an advantage over the people who can not find as many codes as our team can. And based on what I have seen about the world, the distribution of who has how many codes is likely to be a power distribution, so only a few people will be out at the front of the pack with a lot of codes.

    If one reads the Terms of Service of the contest, the way it works is that there is going to be one drawing for each code. Everyone who found a particular code will be in the running for the prize that is attached to that particular code. If you have already won, then you can not win again.

    The math has to work out different here. In the standard raffle example, if you were the only person to find the rarest code in the whole world (and no other codes), you have almost zero chance of winning. However, in the raffle being used in this internet contest, you would be guaranteed to win.

    If I were the sort of person who had an independent study student looking for a math project, I’d have my student work on it. There has got to have been a lot of work done already on the various ways to run raffles, but who knows how much of it is from the standpoint of determining whether you should collaborate with others to gain entry into this particular type of raffle. If there is existing work, that would give a student something to build off of. As is the trend these days, I would imagine that the student would learn enough Python to run some simulations of various numbers of codes, entrants, collaborators, etc. I would not be surprised at all if one of the flavors of this problem had an optimal solution when the ratio of some important quantity to some other important quantity were 1/e.

    This problem also reminds me of an old problem about the Green Card diversity lottery, back when it was done on paper. In the old lottery, the government would draw out paper applications at random, and if your application was chosen, you were eligible for a Green Card. However, if your application was chosen more than once (only one entry per person!), then you did not get anything (and were probably banned from ever coming to the United States). In this case, the question was to find the optimal number of applications to send in. Now that everything is done on computer, this question is obsolete.

    Since I’m not particularly likely to win the contest, I decided to buy some more yarn that I don’t need and to knit myself a sweater that looks kind of like the ones that the models are wearing in the advertisements for the contest. I think that this means that the real winner here is the yarn store.

  • Midweek Update

    Clearout Week continued, finishing Day 3 today. Team leads have set a goal of closing 100 tasks by the end of the week. Fortunately, closing an obsolete task as “no action” or merging a duplicate in to another task also counts as closing a task. I may have been pressured to close a task that probably deserved more attention than it received.

    But there will be prizes if we close enough tasks! One of the prizes is virtual badges to adorn our avatars on the task management system. As I am an administrator of the system (and the person who is in charge of the care and feeding of the system), I could give myself a badge whenever I want. In fact, I have enough power over the system that I could shift the permissions domain for badge-creation that people could only create and edit badges during certain phases of the moon. Have I mentioned this before? One of the built-in permissions modules has a moon-phase option. This is delightful. This is more delightful than some sort of bug badge.

    Due to poor planning on my part, some of my Clearout Week tasks may not get done by the end of the week. I’m rewriting a cron that mangles the database in such a way that every time you want to test it, you need to restore a few tables on your test server to their previous state. It might also set some values in a cache somewhere to stop it from running again if it tries to run too soon; I might also need to fuss with my computer’s clock.

    One of my other tasks might not get done because if it goes badly, the live server may have a little bit of downtime. And it seems polite to let the users know with more than a day or two in advance of that the live server might go down during business hours (when these users typically expect it to be working flawlessly). Assuming that things go well, they wouldn’t notice anything. But can you really count on everything going well? It might make sense to schedule this outside of business hours, but I want to be sure that there are helpful people around because “phone a friend” is not the best situation to be in when the server is broken and your colleauges are not really your friends and they don’t use the phone. Oh, and we have an external deadline to complete this task in the next 30 days.

    And then there is the task to move some files from one directory to another and change the values that are checked for by one particular function. This is either going to be delightfully trivial or a massing heckin’ nightmare.

    Since it is always hiring season, I helped interview someone today.

    Speaking of seasons, we are having a season today here in San Diego! It is called “winter,” and it is not even ironic winter. I wore my winter coat! It has been so long since I have worn my winter coat that it still had a drycleaning tag from back when I lived in Knoxville. It was 39 Fahrenheit degrees this morning.

    If this weather keeps up, it will be too cold to go out in a t-shirt. Which is a shame, as if we reach our 100 task goal for the week, we get to design an exclusive t-shirt for the team.

  • Teaching an Old Cat New Tricks

    I’ve been working on training Sophie. She’s a very smart cat. She is almost as smart as a typical dog. The first two words I taught her were “hungry” and “food.” She probably doesn’t understand exactly what “hungy” means, other than I ask her if she’s hungry before I ask her if she wants food. She definitely understands the word “food.”

    Relatedly, I think that she is starting to catch on to the meaning of “can.”

    I’ve also been working on teaching her some non-food related words. These are a bit harder because Sophie is very, very, very food-motivated. So far I’ve made the most progress teaching her “petting.”

    We’ve reached the point where if I call out to her, “Sophie, do you want petting?” she will run over to where I am sitting, jump on my lap, and expect me to start petting her.

    She’s gotten good enough at responding to this that I told Jim that he should try. He was sitting in the good chair and called out to her, “Sophie, do you want petting?”

    She ran over to me, jumped on my lap, and waited for me to pet her.

  • The Sneakiest Bugs to Find

    Next week we’re having Bug Clearout Week, so all of our regular projects are going to be on hold while we clear a bunch of small things out of the backlog. My two major projects both went into code review on Tuesday, plus we’re doing a bunch of server maintenance this week, so I was left facing the rest of the week with only a litle bit of time to get started on something.

    Yesterday I grabbed something small from my queue: Paul wrote the code that produces a weekly internal email that reports on certain aspects of what users of our site have done in the past two weeks. Someone took a screenshot of the email, which said something seemingly impossible about elementary school students. Something that goes against all of our experience working in education. It was my job to track down the error in Paul’s query and fix it.

    Because I am telling this story, you know that Paul was right. If you know Paul this does not come as a surprise. In retrospect, I should have known that given a choice between Paul’s code being wrong or something impossible happening, that Paul is right and the universe is wrong.

    So, Paul’s query was right. But maybe the database was lying to us? So I checked a different – but closely related – metric that is recorded by remarkably simple code and was written by someone else. Same signal. Checked a log that is a weaker proxy for what we are measuring. Still showed the same skew. What about the login log? Even at that coarse a level, the information was still consistent.

    Debugging abstractions of eight-year-olds is going to be remarkably difficult. Fortunately, my two main projects got bounced out of code review pretty quickly (which is what I expected because I needed implementation advice about the novel parts of each of them). I can spend the rest of this week algorithmically slinging large quantities of information around The Cloud.

subscribe via RSS