Five weeks in: day 35

I’ve found myself thinking about stories like Swiss Family Robinson, or Lost in Space, those where a family is trapped or abandoned somewhere and forced to hunker down for a long period of time. I suppose the analogy between those and our current situation during this Great Lockdown isn’t quite apt for a variety of reasons, but I don’t have any personal frame of reference. Hopefully we’re not in the Donner family. All I do know is that this period is likely to have a long-term effect on our culture, one which I imagine will soon be reflected in our art. There’s a scene in Devs where they’re looking back thirty thousand years a family of cave dwellers gathered round a fire an noting that some of the cave paintings were separated by five thousand years. “Imagine staying in one place for that long.”

I don’t feel like I’ve been as productive as I should lately. It’s hard to focus with two small children running around the house constantly, so I can only find small slivers of twenty or thirty minutes here and there with which to try and get into the zone. No more two or three hour blocks, unless it’s after everyone has gone to bed. By that time I’m drained. Perhaps that’s because I fell of the wagon last week and have been drinking in the evenings again. Perhaps it’s just the drain of fighting with Elder about everything, or just the constant cooking and cleaning, or having to manage groceries shopping twice as much. Or maybe it’s just the cumulative stress of worrying about losing my job, finishing my degree, and the numerous unfinished projects around the house that need to be addressed: replacing the dishwasher, the rotting boards on the deck that will need to be replaced soon. Trying to get a goddamn tomato seed to sprout.

I believe I’ve been successful disassociating myself from the action in the equities and crypto markets. I still check the price of bitcoin several times a day, and equities at least once daily when I trigger my value averaging program. I don’t stress about it; I might allow myself to be a bit elated when things skyrocket, but I haven’t freaked out or let it ruin my day when things tank. I guess I’ve been doing this long enough now that I’ve gotten good at compartmentalizing it. That said, I really do need to do some calculations and figure out what my gains have been over the years and compare it to what they would look like had I simply invested in an index fund. Then I’ll know whether I have any business in this game, or whether I’m simply a bad gambler.

Since I’m on the subject of the market, let me just make a note about the significance of yesterday. It was the fortieth celebration of Earth Day, the twelfth anniversary of the Deepwater Horizon spill, and oil prices crashed so hard that futures went negative for the first time ever. It really is ironic.

So here we are, finally able to isolate ourselves, and idiots around the country are already trying to reopen the country. Thankfully our Governor isn’t as stupid as those elsewhere. I’ve been seeing charts of the Spanish Flu epidemic; the second wave is the worst one, and I fear that’s what we’re facing. Since the lockdown is working, it makes our efforts seem unnecessary. On top of that you have the portion of the population who’ve been feed the line that COVID is a hoax out there protesting the right to re-open Applebee’s. We’re no where near the end of this thing.

At least we hope that the girls will be able to see their grandparents in a few weeks. Elder has been using the Messenger Kids app to chat with family, so maybe we’re not quite like the Robinson’s yet.

COVID from Home: Day 34

My bronchitis seems to have cleared up this weekend. I was actually able to work out for the first time in ages, and even took Elder on a three mile bike ride yesterday. I’m pretty proud of her for trekking it out. It was fun, and good for her to get our of the house and get some exercise. Both of the girls are having problems getting to sleep on the weekends since we don’t give them melatonin Fridays and Saturdays, so I figured I’d see if physical exhaustion would do the trick. She did have trouble falling asleep, but here it is almost eight AM and she’s still in bed. Like clockwork, Monday comes around and she sleeps in.

We watched the last trio of the Star Wars movies this weekend. The Last Jedi is my fave of the bunch, especially the encounter between Luke and Kylo Ren in front of the salt mine. I was expecting problems going into Rise of Skywalker, having seen spoilers and reviews on Twitter. As a result I wasn’t too disappointed. The plot was contrived, and the whole movie was just too much for me. The girls liked it. Not sure if I want to go back and watch the prequels with them; we’re near the end of season one of Clone Wars, so we’ll probably just stick to that for now.

My mind seems to be pre-occupied with work. My boss had dismissed my comment about shuttering two weeks ago, but I noticed that payroll had been slipping again, from Thursday or Friday until the following week. I haven’t checked for this week yet, but I seem to be working out what my response is going to be. I’m not going to be working for free. I’ve been on unemployment before, and assuming the state’s infrastructure is holding up with the number of claimants, I have no problem going back on it for a while. Ultimately this is all unnecessary worry; I’ll have my degree in two weeks anyways.

I’m still not sure what my plan is. It’s become very hard to get things done with the girls home. My wife is locked in the office from eight to four, and I can’t take my little breaks on the piano or my upstairs workstation like I’m used to. I don’t see how I would take a full-time work from home position with them at home. Not without parking them in front of a screen all day. My priority is finishing my school work, and making sure that they’re getting some sort of structure learning. Younger still has to learn her letters and writing. As much as I like the idea of home-schooling them, I’m not sure I want to unschool them and just let them loose.

Our grocery lists now look less like a trip to the grocery store and more like the starting loadout for a trip on the Oregon Trail. Getting meat and cheese has been difficult lately, and with all of the COVID infections at the Smithfield pork plants, now seems like a really good time to stop eating meat. I’ve been cooking up a storm, but keeping fresh fruits and vegetables means that we have to get food orders in more than we had originally planned.

So far our gardening experiments have proved fruitless. We may have some things finally starting to sprout; I suppose it was a bit too cold outside for things to start on their own, and we’ve had a lot of rain the past week or two. We’ve got a clear, 30-count egg carton that will make a nice greenhouse for seeds, it will be our project with the kids later today. My wife brought home her plants from the office, so the kitchen is looking like a little atrium with all the greenery around.

We’re in a bit of disarray with my wife working from home now. She got a new desk, so we wound up getting rid of the bed in the guest room via the local buy nothing group. Thankfully I set Elder up with a laptop that she can use in her room for school, and I’m planning on setting up my old workstation for her that we can share somewhere else.

Finally, our dishwasher has decided to stop cleaning anything. I can’t tell if it’s water pressure, or crappy detergent, but nothing comes through clean anymore. So it looks like we’ll be buying a new one sometime this week.

The sorrow of friendship

I had a late-night call with an old friend yesterday, after the girls were long in bed and I was on my fourth IPA. He’s an older buddy; we used to be business partners, but our lives have diverged quite a bit since we worked together, about fifteen years ago. I was twenty five then and he was thirty four, and although we’ve stayed in touch over the years, we’ve drifted apart. This call was the first time we’ve spoken in several months, and it just served as a reminder how different our lives are.

There’s a common saying in self-help and other circles: you are the average of the five people you spend the most time with. My wife and I took this saying to heart some time ago, realized that the crowd we had been hanging with were not travelling in the same direction as us, and pretty much grew apart from most of them. I can honestly say that I was a fuck-up back then.

I remember once, in my twenties, I had a conversation with the local police chief. He was off duty, I can’t remember the context, but there was some religious context to it. The subject turned to rock music. The chief started wistfully recalling his band days, playing Stones and Zepplin, Back Door Man, he said, but the message behind all of that was fleeting — he didn’t use the word sinful to describe it, but all that paled in comparison to the purpose he felt after he found Jesus.

Of course I haven’t had any similar religious conversion. The story I tell people is that I had to make a choice with my life. Whether to keep “pursuing music”, an excuse to go out and get wasted at open mic nights and bars, or focus on my wife and the family we were building. I made the right choice. The alternative would have been another DUI, another job lost, I likely would have cheated on my wife and lost her too. So a lot of “friends” got cut in that decision as well. I haven’t regretted it all, je n’rein pas, as they say.

Another friend, one of my oldest, reached out to me out of the blue several months ago, and stopped by for a very short visit. We caught up, it seemed like the same ‘ol, same ‘ol, even though the details had changed. It seemed that he at least was in a better place than when I had left him last, he said he’d been sober for over a year. I was in the midst of one of my abstinent periods. He was staying fit, and working out, but if he had found any professional success I was expecting it to be short lived, as his pattern had been since I had known him.

Both of my guy friends have been single for some time. They had come off of bad breakups that had left them broken and emotionally scarred in some sense. I had been in similar relationships earlier in my life, and I’m lucky that my wife and I had a long history together before becoming romantically involved. And the fact that she has her shit together hasn’t hurt, either. If there was one single factor that I could point to with regard to the change in my life’s trajectory this past fifteen years, it would be her influence. It took a long time to turn the ship around, but I can only imagine where I would be without her.

I’ve got to reiterate again how lucky the two of us and our girls are in the midst of this Great Lockdown. My friend seems to have gotten the short straw at his job and is stuck being the one to have to come into the office and help the other “essential” staff. He’s making money working overtime and it burned out, but feels compelled to continue because he’s under endless student loan debt. He’s not taking care of himself, I have no doubt. We talked about politics and bitcoin, but when I found out just how deep his situation I was reminded why we had grown apart in the first place.

I’ve tried to offer advice and solutions in the past, but I usually wind up feeling bad about it, like a man in a boat telling a drowning man to swim. At least last night I managed to catch myself before I became indignant about it. I think it was just the sadness, and hopelessness that my friend seemed to be resigned to. It’s easy to imagine a way out of things for someone else, but only they can take that first step.

Choose FI: Financial Independence

My wife and I don’t usually read too many of the same books. Beside some sci-fi and fantasy novels, our non-fiction reading preferences don’t overlap too much. She likes trashy novels and I stick to political, business, and technological based non-fiction. She recently discovered the FIRE movement, a group of people trying to build freedom from wage-slavery through financial independence. She picked up ChooseFI a few months ago, and has been listening to the related podcasts regularly. Since being able to redefine work has been of great interest to me, I decided to make a trade with her: I would read this book and she could read one of mine. I’m looking forward to her upcoming review of The Future Is Faster Than You Think — as soon as I finish it.

ChooseFI is an introduction to the financial independence movement. The last two letters of FIRE are for retire early, which the authors acknowledge is a bit of a misnomer, as many who have achieved FIRE continue to work. The general idea behind the system is to lower expenses and save up enough money to be able to fund your lifestyle via the interest earned on these savings. The first step is determining your magic number. By taking one’s annual expenses and multiplying it by twenty-five, you will have the amount needed to be able to maintain that lifestyle off of a four percent rate on those savings. These concepts are given as the rules of twenty five and four percent.

Determining this number and thinking about spending in terms of twenty five times (or three hundred if you’re talking about monthly expenses) can produce a dramatic shift in mindset. A simple example: spending three dollars a day on an energy drink or coffee each workday might cost you fifteen hundred dollars a year just to purchase, but maintaining that level of spending from savings income will require a whopping thirty seven thousand dollars in the bank. Another example: we’ve had a housekeeper come by our home twice a month, at $130 a visit. That’s over three grand a year, in direct expenses, over seventy eight grand to maintain during retirement. Putting these costs in this perspective creates a stark shift in priorities.

Of course the goal of living FIRE isn’t to live life as an an ascetic, it’s about prioritizing the things that one wants out of life. As a self-help book, Choose FI does a good job of laying the ground work toward setting priorities, developing a growth mindset, and mapping out the path to get there. There’s chapters on US tax savings, advice on college, career and networking, and investment tips that focus on real estate and house hacking, investing in index funds, and building a business.

As someone who’s taken a hands-on approach to managing my retirement and stock accounts much of my adult life, I found the chapter on index funds to be the weakest. I understand that for most people, picking a low-fee Vanguard index makes the most sense, but reading the following passage in the days following the worst daily drop in the S&P since the Great Depression struck me as ironic:

Buying an index fund means making a bet that the system continue to grow and prosper. Some will argue that this will not always be the case. After all, societies and economies have collapsed in the past. While this is true, I’m not basing my plan around a worst-case scenario that may never come.

Choose FI, pp. 229

Whoops.

To be fair, the authors have acknowledged the current pandemic and situation in the markets in their recent podcasts. From what I’ve heard, it sounds like they are exercising caution and urging listeners not to jump at the current fire sale prices. This is probably wise advice for most people.

The book is perhaps a bit longer than it needs to be, and I found myself skimming through the book the more I reached through the end. There are lot of personal stories from both the authors and many of the chapters showcase others that the authors have met or interviewed on their podcasts. I suppose it’s to be expected in an introductory book like this. The chapters on tax strategies and real estate investing were of the most interest to me, and the author’s point to other resources where readers can find more comprehensive resources.

That said, the authors deserve credit for the community building that they’ve built. I hesitate to use the term ‘media empire’, but I did experience a tinge of jealousy at some points during the some points, reading about how they quit their day jobs to focus on their Choose FI company, or others who were able to retire at thirty five based on their real estate holdings.

My wife and I may have seen the light a bit later in life, but we both understand that our parents path of working a nine-to-five for fifty years is not the way for us. We’ve got a long way to go until we’re in the position where we’ll have the freedom to work when and where we please. If anything ChooseFI has given us a similar perspective and opportunity to discuss and define what that life would look like.

Privilege and child rearing

boy sitting near glass wall

Our family has been extremely fortunate so far with this pandemic, and it has reinforced the great privilege that we enjoy. Beyond the threats to our health, this lock down has actually left us more financially stable and brought us closer together. At the same time, it’s proving hard not to raise two spoiled children.

Between the savings from taking our children out of daycare, the stimulus bill payment, and our tax returns, we’re looking at enough cash on hand to pay our mortgage for six months. We’ve been stocking up on groceries for six weeks or so now, and another pickup today has us with more than we need to get though the next several weeks: a full fridge, chest freezer in the garage, kitchen pantry, dining room shelf; and another closet upstairs full of “hurricane supplies. With the help of the LDS food calculator, I’ve even started putting together a prepper list of bulk sized containers of salt, grains, and nuts, as well as stuff I would never have ordered ever, like canned cheese, powdered butter and eggs.

We’re expecting peak infections to start in another week and to run through the first week of May. I took Younger for a ride down the street yesterday, Easter, and saw way too many people gathered together. Lots of cars parked in front of houses. I can’t blame people for wanting to be together; at least the churches were closed. I’ve seen the news, and I’m sure we’re going to be seeing a lot more cases near the end of the month.

Of course my wife is very concerned. She’s been gathering PPE for her union members via social media. One guy donated one hundred 3D printed face-masks; she said the line of people waiting for them when she handed them out today was ridiculous. Still, today she asked me about taking unpaid leave for the next two weeks. I told her ok — more privilege on our part.


Today was Elder’s first day “back at school”. We had a real bad morning with her talking back and had to engage in a battle of wills. I felt miserable about it. I didn’t push anything, but she wanted to do a logic problem that the school had recommended, and I sat down to help her. She got frustrated and wanted to quit, and when I sat down to help walk through it with her we both got into one of our power struggles. Sunday I asked her to clean her room and wound up spending an hour sitting in the hall listening to her wail. I’m not sure what I think I’m doing other than making her dig in, so I’ll need to refine my approach. It’s just that my wife an I have completely different, and somewhat contradictory, parent styles. I thought it would be good for me to have them during the day so they couldn’t play the two of us against each other, and I’m not sure how I’ll feel when she’s working from home and here with us full time.

Just the prospect of it is going to cause some logistic problems. She’ll need a private space due to confidentiality requirements for her WFM approval. The only place in the house with doors besides the bedrooms and bathrooms is the finished room over the garage, which was originally my man-cave and guest bed. It’s going to require some reorganization. We’ll probably lose the bed and bring another desk in. We had planned to put a laptop in Elder’s room, but I’ll probably pull my old Windows workstation from downstairs and make it into something she and I can use for music and gaming.

I’m trying to be less of a tyrant with the things I’m asking the kids to do, but be more firm when I ask them to do something. In spite of the practice I’m working on to be a better parent, I still cannot abide them telling me “no” when I ask them to do something, or being picky about their food. Obviously I’m less strict with Younger, and usually only put her in timeout when she’s making a game of disobeying or having an actual temper, but I think that’s because I can easily pick her up and move her for timeout. Elder is harder to handle. And more likely to fight with me in the first place.

My wife had gone out of her way to make sure the kids had nice Easter baskets waiting for them when they came downstairs yesterday morning, and when we got down the first thing Elder said to her was that Younger had more eggs in her basket than she did. It was my fault, some of them had shuffled between baskets when I brought them down the night before, but the sheer lack of gratitude from her has been an ongoing issue, and one that I’m not sure how to correct. Is withholding the solution? I don’t know.

Elder and I woke up early this morning, she disappeared to her room while I was meditating. Halfway through it I realized she had probably taken a tablet to her room, and saw it missing when I finished. I found her lying on her bed, I asked her if she knew where it was, she said no so I lifted the sheet and found it right in front of her. She had pulled the sheet over it right before I walked in the room. Busted.

We were out of milk this morning, so I told the girls I was making oatmeal with what was left. I think that’s what started the fits, and I’m wondering whether I did it to be petty. I picked up groceries before lunch, they wanted ramen and I told them to eat some rotisserie chicken and leftover carrots and rice. Elder picked at it, which I knew she would, so I picked the meat off the bone and put it in her seconds of ramen. It set her off, which I knew it would.

I told them that they were going to have to get used to eating what we gave them. I don’t want them throwing out food, and I’m not sure that we’re going to be able to get what they like. If it gets to the point where we have to eat emergency supplies I can’t have them being picky eaters. But I guess I should remember the old programming axiom about premature optimization.

You ain’t gonna need it. Hopefully.

At least it’s not COVID: Day 26

I went in for an X-ray on Wednesday after becoming worried about my breathing issues. I had a slight shortness of breath as well as some sort of weird noises from my lungs when inhaling or exhaling deeply. Given all the various ailments that the members of my family have had, I suppose I was becoming anxious. Plus my wife has still been going to her job at the medical center, which now has well over two dozen confirmed cases between patients and staff. One of the main reasons I went was to try to get an answer, whether it be COVID, or pneumonia. I was fairly confident that I had coronavirus, and was hoping I could get it confirmed so that my wife could get her two weeks excused from work. Turns out my x-rays are “consistent with bronchitis.” I payed a hundred dollars for the diagnostic.

Last week was spring break for the kids, so we put all instruction time on hold. In line with my post about raising successful people, I stopped forcing them to do chores, and just told them what to do if they wanted to watch a show. Their task was to clean the living room floor of all their toys. They did not accomplish this, but it was fine cause they actually spent all day playing together and outside. It was a beautiful day. The next day Elder complained to me for hours that her sister wasn’t helping, and she eventually did it herself. The new approach seems to be working. Its similar to how I’d taken to dealing with dinner: you don’t have to finish your plate, but you’re not getting seconds or desert until you do. We’ll see how this approach plays out next week, but I’m rather optimistic.

Facebook’s Messenger Kids has been a bit of a godsend. One our friends said they were using it and I finally got around to installing it a few days ago. I was able to add all of our family members to it, as well as some of Elder’s friends, and it was so nice for the girls to be able to contact their grandparents or friends without my wife or I having to facilitate. Plus it’s got those silly video filters that does the silly transformations that the kids like.

No progress on the “garden”. Nothing has sprouted yet, it’s been more than two weeks. I put more tomato and cilantro in the pots, but I think the seeds are too old or have been killed by keeping them in the shed. I may have to try the old paper towel in plastic bag method to be sure.

I am so close to getting my degree. The past week has been Django, Django, Django, as our team works to get our final prototype demo read for presentation on Thursday. Them I’m done with my professional development course, which leaves just numerical methods and independent study, which I have sort of rolled into one. I’ve been unable to get much out of my professor, I’m not sure what the problem is, and I’m sort of peeved as I think I’ve done him a big favor by converting his course materials into a GitLab repo. I spent hours converting his old HTML docs into Markdown and LaTeX, and I can’t even get an acknowledgement out of him. I think it’s cause he’s basically adverse to technology. It’s so ironic for a CS/engineering professor. Hopefully I’ll be able to get some closure on this Monday, and figure out what the hell I actually need to do to finish the semester. And hopefully I’ll be able to fulfill the requirements for my independent study at the same time.

There’s not a lot to say about work. It basically involves checking in for a morning scrum call, then there’s maybe an hour or two of actual work that needs doing. There’s work on my side projects that needs doing, but not a lot of income. I’ve been spending some extra time working on coding projects: I just got another commit on the TDAmeritrade library and have start looking at how to implement websockets for real time data. It will come in handy for the GBTC estimator, and allow me to make my value averaging protocol and trade planning more sophisticated. There’s probably several posts right there already.

Now that I seem to be on the other side of my medical problems, I’m going to need to start getting back into a fitness regimen. It’s been weeks since I lifted a weight, unless you count swinging the kids around.

Been playing games to unwind. FrostPunk and 8 Billion Humans on the PC, and just got a copy of Root in the mail yesterday that I’ve been waiting for. Elder and I had a late-night session playing last night that was fun. And I’ve been doing a lot of yummy cooking. We made a loaf of bread with the kids that came out nice and have promised them we’d do a practice run of a cake and frosting — from scratch — for their mother’s birthday next month.

WordPress moban.html hack

So I just finished cleaning up one of the WordPress sites that I manage from a hack. I was checking Google Analytics and noticed a few irregularities. The first was a number of hits from China, and then noticed some URLs in the site description that didn’t belong there.

I checked the first URL and yep, we have a hack. I logged into the WP dashboard and immediately found two admin users. I did not find the urls in posts or pages, which was odd, so I started scrubbing the site. I found that I was locked out of several administrator functions, such as updating WordPress or installing new plugins. Thankfully, I was able to deploy them through Infinite WordPress. I ran several scans to check for modifications to the wp-admin directories, and even deleted them and uploaded them from a fresh download of WordPress over FTP.

I found several directories that were out of place: developerl, openbayl, and webstruct. The latter was filled with XML documents, some sort of sitemap:

<?xml version="1.0" encoding="UTF-8" ?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
     <url>
			 <loc>http://<my_hacked_site></loc> 
			 <lastmod>2020-04-07T10:13:06-05:00</lastmod> 
			 <changefreq>always</changefreq> 
			 <priority>1.0</priority> 
			 </url>
		     <url>
					 <loc>http://<my_hacked_site>/46/Auto-34cm-2-Meter-Kabel-C16620-Aerzetix-Radio/</loc> 
					 <lastmod>2020-04-07T10:13:06-05:00</lastmod>   
					 <changefreq>daily</changefreq> 
					 <priority>0.9</priority> 
					 </url>
				     <url>
					 <loc>http://<my_hacked_site>/141/35-mm-KlinkenStecker-und-Adapter-Handy-25-mm-Stecker-iPad-MP3Player/</loc> 
					 <lastmod>2020-04-07T10:13:06-05:00</lastmod>   
					 <changefreq>daily</changefreq> 
					 <priority>0.9</priority> 
					 </url>
				     <url>

The openbayl directory contained a moban.html file that contained some sort of HTML template, and the developerl directory seems to have the core part of the hack. It includes another moban.html file that contains a bastardized copy of the sites WordPress headers and footers, and some mangled content that appears to be scraped from the site as well. There was some sort of encoded key in a logs.txt file, and a map.log file pointing to the webstruct xml files. I’ve uploaded this file as a gist.

I downloaded a copy of these files, then deleted them from the site. After running security scans and looking for any additional files that didn’t belong, I was still locked out of installing plugins. I started pouring through the SQL data, looking for what happened. I checked the .htaccess file for any shenanigans, and disabled all plugins. My user appeared to have admin access in the database, and I verified that the administrator role had the install_plugin role in the wp_options wp_user_roles row. But when I added a PHP check in the site files, I didn’t have the role.

I had spent almost two hours digging through this. I had identified the time of the hack, and thankfully, I had a backup from the night before. I restored it, and functionality was back to normal.

I’m troubled that I don’t know how the hack occured. Everything was reasonably up to date. We were behind on a WordPress update, 5.3.x to 5.4, but I’m not aware of any vulnerabilities that would have allowed us to be hacked. Regardless, I took additional steps after restoring the site, including installing Sucuri Security and NinjaScanner. I’m also going to be deploying them on all sites under management.

Raising successful kids

Having the girls home from daycare has really given me more hands on with their education. The little one is still too little to do much formal learning, but I’ve been trying to engage my second grader with various activities to help drive her creative and technical talents for some time. My wife and I have always made reading a part of their daily routine since they were in utero, and it’s paid off. We got Elder’s acceptance letter to the gifted school earlier this week.

I had behavior problems when I was in primary school, mostly due to me being ahead of the class in some way or another. I can see the same issues with Elder when she’s doing her Zoom conferences with her class. She’ll be distracted by messing with her camera background, painting her face, or working on something else and constantly interrupting what’s going on to chime in with a progress update. It’s hard for me to witness without trying to correct her, so I’ve taken to leaving her alone to it.

Once she had the dexterity and reading skills to starting using the computer and keyboard, I got her a typing game to play. I had one when I was little, and want to make sure she has proper technique. She finished it, but I still catch her two finger typing, so I need to reinforce it, or find something to mix it up a bit. I hear speed typing is a competitive thing now, so I’ll see if she’s interested in that. Of course I realize that voice first is now a big thing, but I want her to have the underlying skill.

To that end, I’ve started asking her to do morning pages. I gave her one of my Ubuntu laptops and set it up for her with Atom, and tasked her with doing twenty five written words, as a sort of morning pages exercise. I don’t put any requirements on what she writes, and she’s still struggling with it. I’m not sure I’ve really made the case for why I’m asking her to do it. She sees me writing these blog posts in the morning, so I think she gets what I’m doing, but she complains about not having anything to write.

Music is very important to both my wife and I. I’ve played guitar for twenty five years, and we both love singing. The girls enjoy their cartoon musicals, and will often make up songs. I wanted the girls to have access to the tools to make their own music, so I bought a ukelele for them early on. It didn’t take — they haven’t figured out frets — so I bought a piano and got Elder doing Playground Sessions. She still complains about it, but I keep encouraging her to push through the lessons. Getting to the point where she’ll be able to play her favorite songs and create her own is hard, but I want her to see through it. Younger seems to enjoy the song modes on the piano, and likes to “play” along with The Muffin Man. Lately we’ve being taking turns with the pre-programmed rhythm and accompinament options and have been holding dance parties. It’s super cute.

I started Elder on Code.com’s lessons about a year ago. Most of the exercises are centered around moving a character, say a bee, around a path using move forward, turn right, repeat and while blocks. It was fun working with her to solve the puzzles using the minimum number of code blocks, and one of them took us several tries to optimize.

A few months ago I started picking up a few Python For Kids books from the library and tried to entice her into taking a look at it, but she wasn’t interested. We had talked about making programs for various things, but I guess the timing wasn’t right and we set it aside.

Perusing Barnes and Nobles kids gaming section in the pre-COVID days, I came across books about Roblox among the Minecraft and Fortnite books. So I finally set it up on her shared computer a few weeks ago, hoping to give her an alternative to watching TV. And man, she loves it. I pretty much leave her to it, although I have walked in on her playing shooting games on it. She really gets sucked into some of them: a pizza shop simulator, a mansion building time sink, and some sort of boat builder river obstacle course.

I took a look at the Roblox developer docs; it’s actually a sophisticated gaming platform. It incorporates 3D modeling for the various game assets, as well as Lua scripting for the game logic. Elder and I have spent some time playing with the Roblox Studio, placing models and messing around with terrain generation, then letting her playtest by running around in them. We’ve talked about making a game together, and she wants my help building one. I have to question why she wants to make a hunting game where the goal is to shoot bears and lions and “sell their meat” for money, but I’ll take it one step at a time.

Roblox is free to play, but it does have in game purchases using Robux. You can spend this in game money on items for your avatar, or powerups in game, but we’re not doing that. Instead, I decided to see what we could do by creating our own assets. I found out that you can import and export models from the Studio, so I went and downloaded Blender on her computer. We spent Friday and Saturday night watching tutorial videos on YouTube, and took turns sculpting faces in Blender. I even broke my old Wacom tablet out of the closet to play around with. The package is way to sophisticated for her, but I’m glad she took a little bit of interest in it. She says that she has no interest in any of the animation features, but I can tell you that it’s spurred my interest!

Of course making sure the two of them get plenty of non-screen time is important, so I’m making sure they get plenty of outside time. It’s hard since we’ve been isolating for the last two weeks, cause it’s just the two of them. We’ve been taking daily bike rides for exercise and I’ve been trying to get them to sit through some mindfulness lessons via Anaka Harris on the Waking Up app. It doesn’t seem possible for Younger at this age, but Elder at least seems capable of about thirty seconds max before she starts fidgeting. We’ll see how practice goes. All I can really do now is set an example and try to encourage three to give minute sessions.

I want to wrap up by mentioning a Knowledge Project podcast I listened to yesterday with Esther Wojcicki, author of How to Raise Successfull People. Ester’s learning model goes by the acronym TRICK, for trust, respect, independence, collaboration and kindness. There’s a lot of good points in here, although, as other’s have noted, Esther’s privelege and affluence is quite grating in some respects. Still, it’s something that I shared with my wife last night and am going to share with the girls also.

GBTC Estimator Update

I spent some time this weekend working on my GBTC price predictor. The original idea behind this tool is to take the price action of BTC while the market is closed and use it to predict what will happen to the price of GBTC after the market opens. The original implementation uses the last close price of GBTC, and the price of BTC at the same time, then calculates the premium. It then retrieves the current price of BTC, then uses the calculated premium to determine what the current price of GBTC should be. It’s rather rudimentary, but serves as a quick and dirty calculator.

My hunch is that there are huge arbitrage opportunities to be found within the price action, especially when there are big moves in BTC’s price action. The big unknown, however, is the GBTC premium. The actual underlying value of a GBTC share is 0.009BTC, but the actual trading price fluctuates around 0.0012, so there’s some possibility to take advantage of this spread. We’re talking about the possibility of potential dollars in share price.

GBTC premium. NAV is <0.0009.

For example this morning, our calculation, based on the price of BTC at $7157, is that GBTC should be at $7.98-8.01 range. Here’s the current premarket spread.

The 7.82 bid order was quantity 800 about half an hour before open. Here’s the chart about five minutes after open.

The difficulty that we’re facing right now is matching the price action between the equity, GBTC, and the underlying crypto, BTC. For our inital purposes, it was enough to use the daily OHLCV data for the equity, and hourly data for the crypto. We only needed to track the crypto price at market close to get our initial premium value. But to do a proper arbitrage bot, we’ll need minute-by-minute data. This presents problems, since all of our work through the TDAmeritrade API has been via the REST API, and this work will involve streaming data via websockets, and likely some async programming.

It would be nice to be able to see the intraday price action of the GBTC premium. Right now our free-tier TradingView account only gives us the daily interval, so being able to chart this ourselves is one of our priority. From there we can calculate some sort of moving average and standard deviation to determine when a price is out of band, and represents an arbitrage opportunity. It might be possible to configure something similar with TradingView, but since they don’t support TDA brokerages, we would be subject to a fifteen minute delay on the GBTC data. There’s also the cost factor. As an OTC listing, GBTC trades still have fees associated with them, so any arbitrage situations will have to be large enough to offset the trade.

I’ve got lots of changes that I need to make to the code; right now I’m running into some testing issues related to monkeypatching out the API calls. I’m planning on doing some real time charting using the Bokeh library, and this will have it’s own set of issues, I’m sure.

Alienware m15 slow resume fix with TLP

I’m happy to report that I finally got my new Alienware m15 properly configured. I got it through work via the Dell Outlet, and immediately wiped Windows off of it and installed Ubuntu. There were some issues. The unit shipped with a 256GB M2 drive and a 1TB hybrid. The 1TB was set as the primary drive, so I had to mess with UEFI/Secure boot to get it installed. However the main problem I had was with the power and sleep/hibernation functions.

The main annoyance was that opening the lid to resume the unit from sleep took upwards of half a minute to do anything. I tried a multitude of APCI settings in grub, poured through logs and updated to Ubunutu 19 with no fix, and had finally resigned to the issue.

This was especially frustrating since the unit this machine was obstensibly replacing, a seven year old Dell Latitude, had almost identical hardware and had no problems with the power — although it did have lockup issues related to running Windows in VMM….

This Alienware is quite the power hog, as the battery would only last about an hour on max charge. Again, quite frustrating given that my Latitude can easily get three hours or more. In installed prime-select to disable the GPU, but it didn’t seem to help. Then a few days ago as I was typing with it on my lap, I decided to do something about the intense heat coming from the metal heat grate on the bottom that had been toasting my legs. So installed the tlp advanced power management package. I saw a dramatic decrease in heat and fan activity, and was pleasantly surprised the next time I opened the unit and saw the lock screen almost immediately. Problem solved!

It’s only moderately improved the battery life though, maxing out around an hour and a half. I may experiment and pull the hybrid drive out to see if that is the culprit. I figure the 9th gen i7 should be more efficient that my older one, and with the same screen size there isn’t any other component that could be sucking the battery down like this.

Ultimately the issue is Dell’s lack of support for Linux. If I was going to recommend a laptop for a *nix user I would probably shy away from recommending Dell. They have dabbled with Ubuntu support in the past, and still may do so for their enterprise server lines, but you’re pretty much on your own if you’re using a desktop or laptop. That said, I haven’t run into many problems with the few deployments I’ve done. My old, old Latitude that I’ve given to my oldest works great, but I would probably go with a brand that is dedicated to supporting Linux if I was going to buy something out of my own pocket.

Hopefully this post will help someone experiencing similar problems. If so, please drop a line in the comments to let me know. Thanks!